PHP简单HTML DOM解析器:访问自定义属性


PHP Simple HTML DOM Parser: Accessing custom attributes

我想访问添加到HTML文件中某些元素的自定义属性,下面是littleBox="somevalue"属性的示例

<div id="someId" littleBox="someValue">inner text</div>

以下不起作用:

foreach($html->find('div') as $element){
 echo $element;
 if(isset($element->type)){
 echo $element->littleBox;
   }
}

我看到一篇有类似问题的文章,但由于某种原因我无法复制。以下是我尝试过的:

function retrieveValue($str){
if (stripos($str, 'littleBox')){//check if element has it
$var=preg_split("/littleBox='"/",$str);
//echo $var[1];
$var1=preg_split("/'"/",$var[1]);
echo $var1[0];
}
else
return false;
}

当我调用retrieveValue()函数时,什么都不会发生。$element(在上面的第一个PHP示例中)不是字符串吗?我不知道我是不是错过了什么,但它什么也没回。

以下是完整的脚本:

<?php
require("../../simplehtmldom/simple_html_dom.php");
if (isset($_POST['submit'])){
$html = file_get_html($_POST['webURL']);
// Find all images 
foreach($html->find('div') as $element){
    echo $element;
   if(isset($element->type)!= false){
    echo retrieveValue($element);
   }
}
}

function retrieveValue($str){
if (stripos($str, 'littleBox')){//check if element has it
$var=preg_split("/littleBox='"/",$str);
//echo $var[1];
$var1=preg_split("/'"/",$var[1]);
return $var1[0];
}
else
return false;
}
?>
<form method="post">
Website URL<input type="text" name="webURL">
<br />
<input type="submit" name="submit">
</form>

您尝试过吗:

$html->getElementById("someId")->getAttribute('littleBox');

您也可以使用SimpleXML:

$html = '<div id="someId" littleBox="someValue">inner text</div>';
$dom = new DOMDocument;
$dom->loadXML($html);
$div = simplexml_import_dom($dom);
echo $div->attributes()->littleBox;

我建议不要使用regex来解析html,但这部分不应该是这样的吗:

$str = $html->getElementById("someId")->outertext;
$var = preg_split('/littleBox='"/', $str);
$var1 = preg_split('/'"/',$var[1]);
echo $var1[0];

另请参阅此答案https://stackoverflow.com/a/8851091/1059001

看看http://code.google.com/p/phpquery/它类似于jQuery,但在php上。非常强大的库。