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