我尝试了很多东西,但我无法读取标签上的值。 我在这里以及不同的博客上看到类似的例子,但是那里的解决方案并没有解决我的问题。
Html在网站上是这样的:
<div>
<select name="ctl00$ContentPlaceHolder1$ddlCityID" id="ddlCityID">
<option value="">Choose</option>
<option value="14">Roma</option>
<option value="15">Milan</option>
<option value="16">Inter</option>
</select>
</div>
关于php的代码:
$pageTitle = 'select[@id="ddlCityID"]';
$html = file_get_html($url);
if ($html != null )
{
foreach($html->find($pageTitle) as $element)
{
$link = $element->find('option');
callfunction($link[0]->option);
}
}
错误:
Notice: Undefined offset: 0 in C:\Aptana Studio 3 = a.php on line 57
Notice: Trying to get property of non-object in C:\Aptana Studio 3 = a.php on line 57
我的问题在哪里,我如何获得标签的价值以及标签中的文字。
感谢;
答案 0 :(得分:0)
继续使用simplehtmldom而不是str_pos(但我建议更改解析器,因为simplehtmldom很重)。
您正在寻求的解决方案是
include('simple_html_dom.php');
$str = '<div>
<select name="ctl00$ContentPlaceHolder1$ddlCityID" id="ddlCityID">
<option value="">Choose</option>
<option value="14">Roma</option>
<option value="15">Milan</option>
<option value="16">Inter</option>
</select>
</div>';
$pageTitle = 'select[id=ddlCityID]';
$html = str_get_html($str);
if ($html != null ) {
foreach($html->find($pageTitle) as $element) {
foreach($element->find('option') as $trueElement) {
echo $trueElement->innertext;
}
}
}
请注意,innertext会给你'选择','罗马','米兰','国际米兰'。 trueElement现在包含每个OPTION标记。
'id'之前的'@'也没用。
更新:这是我测试的完整工作代码。