2016-07-05 3 views
1

У меня есть HTML-код с пользовательскими атрибутами и попытка его разбора с помощью компонента PHPHtmlParser. Весь проект, созданный с помощью этого компонента. Ниже приведен пример проблемы.PHPHtmlParser getAttribute не работает для настраиваемых атрибутов

use PHPHtmlParser\Dom; 
class Parsemydiv { 
    function parseAttr() 
    { 
     $str='<div otop="20" oleft="20" name="info"> 
      <img src="example.jpg"> 
     </div>'; 
     $dom = new Dom(); 
     $dom->loadStr($str); 
     $otop = $dom->getAttribute("otop"); 
     $name = $dom->getAttribute("name"); 
     echo "Name: " . $name . PHP_EOL; 
     echo "Top: " . $otop . PHP_EOL; 
     echo "Left: " . $oleft . PHP_EOL; 

    } 
} 

Выход: Имя: Информация Top: Слева:

GetAttribute не может получить пользовательские атрибуты.

+0

Если вы хотите действительный HTML, вы должны использовать данных- * атрибуты: 'данных OTOP =«20»данных oleft =«20»' –

ответ

0

Зачем использовать стороннюю библиотеку для разбора DOM, когда PHP имеет встроенную поддержку для этого? Я предлагаю обучение native functions вместо:

$str='<div otop="20" oleft="15" name="info"> 
     <img src="example.jpg"> 
    </div>'; 
$doc = new DOMDocument(); 
$doc->loadHTML($str); 
$div = $doc->getElementsByTagName('div')[0]; 
$otop = $div->getAttribute('otop'); 
$oleft = $div->getAttribute('oleft'); 

echo "otop=$otop, oleft=$oleft"; //otop=20, oleft=15