PHP Simple HTML DOM Parser: доступ к пользовательским атрибутам - PullRequest
1 голос
/ 05 марта 2012

Я хочу получить доступ к пользовательскому атрибуту, который я добавил к некоторым элементам в файле 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>

Ответы [ 2 ]

4 голосов
/ 05 марта 2012

Вы пробовали:

$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;

Я бы не советовал использовать регулярные выражения для анализа 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

0 голосов
/ 05 марта 2012

Видите, что http://code.google.com/p/phpquery/ это как jQuery, но на php. Очень сильная библиотека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...