从选择表单中考虑以下代码段:
<select name="cat_id"">
<option value="33">Apple</option>
<option value="44">Banana</option>
<option value="48">Carrot</option>
<option value="50">Dew</option>
<option value="77">Eggplant</option>
<option value="84">Fern</option>
<option value="92">Grass</option>
</select>
有没有办法,使用SIMPLE DOM,我可以提取值=&#34; x&#34;特定字符串。
示例,我想获得 Dew 的值,因此,我必须能够 50 尝试搜索和播放,但找不到确切的答案:
Parsing drop down menu with php simple dom&lt; - 但值不是从0开始,也不是均匀递增
php , simple_html_dom.php, get selected option&lt; - 我甚至没有在选择表单中选择条目
我需要获取特定字符串的值,以便我可以使用它来使用cURL发送表单。
希望,有人可以提供帮助。提前谢谢,更有力量。
答案 0 :(得分:1)
以下代码将解析所有option
个节点,当搜索到的文本匹配时,它将显示相应的值并结束:
$input = <<<_DATA_
<select name="cat_id">
<option value="33">Apple</option>
<option value="44">Banana</option>
<option value="48">Carrot</option>
<option value="50">Dew</option>
<option value="77">Eggplant</option>
<option value="84">Fern</option>
<option value="92">Grass</option>
</select>
_DATA_;
// Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($input);
// searched text
$searchText = 'dew';
// Create a regex pattern (match $searchText followed OR preceded by any number of spaces/tabs/newLines ...)
// i flag stands for case insensitive match
$pattern = '/\s*'.$searchText.'\s*/i';
foreach( $html->find('select[name="cat_id"] option') as $option ){
echo $string = $option->plaintext;
// Check if the current node contains the searched text
if( preg_match($pattern, $string) ){
$value = $option->value;
echo ' => ' . $value;
// Exit the loop when done
break;
}
echo '<br>';
}
<强>输出强>
Apple
Banana
Carrot
Dew => 50