2011-06-26 43 views
0

は、私はこのようなHTMLブロックがあります。PHP、simple_html_dom.php、選択しますオプション

 
$localurl = ' 
<select name="cCountry" id="cCountry" style="width:200" tabindex="5"> 

<option value="251">Ascension Island</option> 
<option selected="selected" value="14">Australia</option> 
<option value="13">Austria</option> 
 '; 

を私はsimple_html_domを使用して、この場合、「オーストラリア」で選択した値を抽出しようとしています(http://simplehtmldom.sourceforge.net/)。これまでのところ私は、機能を構築していますが動作していない:

//が

 
function getValue_selected($value, $localurl) 
{ 
    $html = file_get_html($localurl); 
    $i = 0; 
    foreach ($html->find('select[option selected="selected"]') as $k => $v) { 
    if ($v->name == $value) { 
    $shows[$i]['Location'] = $v->value; 
    } 

    } 
$value = $shows[$i]['Location']; 
$html->clear(); 
unset($html); 
return $value; 
} 

    $selected_value = getValue_selected('cCountry', $localurl) 

代替などQueryPathがあまりにも受け入れられる選択された値を抽出します。

+0

代わりに[DOM](http://php.net/manual/en/book.dom.php)を実際に使用する[SimpleHtmlDom](http://simplehtmldom.sourceforge.net/)のサードパーティの代替案を提案しました。文字列の解析:[phpQuery](http://code.google.com/p/phpquery/)、[Zend_Dom](http://framework.zend.com/manual/en/zend.dom.html)、[QueryPath ](http://querypath.org/)および[FluentDom](http://www.fluentdom.org)。 – Gordon

+0

@Gordon QueryPathでどのように入手できますか? – Michael

答えて

1

私は、$showsが機能の外で定義されているとアクセスしようとしていると思います。これは問題がある場合、あなたはそれを渡すように変更し、より良いまだ、署名をFUNCの上部にglobal $shows;を配置する必要があり、どちらかのような何か:。

getValue_selected($value, $localurl, &$shows) 
{/* your function here */ } 

getValue_selected($val1, $val2, $shows); 
+0

元々隠れた入力を得る関数を作った:foreach($ html-> find( 'input [type = "hidden"]')$ k => $ v){。入力値を$ valueとして設定することができました。 (例えば、関数「getValue_selected( 'postingID'、$ localurl)を呼び出すと、 はHTMLコンテンツから値「98765」を取得します)。今は、上記の "select"入力タイプで動作するように修正しようとしましたが、うまく動作しません。 – Michael

+2

私はまだ、スコープで定義されていない変数にアクセスしようとしていると言います。変数 '$ select = array();'を関数の内部に追加しようとしましたか? – cwallenpoole

2

を右答えは次のとおりです。

$html->find('#cCountry',0)->find('option[selected=selected]',0); 
関連する問題