Я почесал голову над этим слишком долго ...
$dom = new DOMDocument();
$dom->loadHTML( $content );
$links = $dom->getElementsByTagName( 'a' )->item( 0 );
foreach ( $links->attributes as $attribute ) {
$name = $attribute->nodeName;
$value = str_replace( '"', '', stripslashes( $attribute->nodeValue ) );
echo "$name: $value<br />";
}
Вот мой код, который я в итоге получил: php dom получает все атрибуты узла .Я также пробовал другие методы, такие как вызов getAttribute () для одного атрибута, чтобы посмотреть, сработает ли он, но получил тот же результат.
HTML-код, который я пытаюсь пройти, просто:
<a id="testid" title="testtitle" name="this is a testname" href="http://example.com/">link!</a>
Я получаю следующую ошибку:
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: error parsing attribute name in Entity, line: 1
Мой скрипт выводит:
id: testid
title: testtitle
name: this
is:
a:
testname:
href: http://example.com/
Я должен добавить, что вывод работает нормально, если 'name'атрибут - это одно слово.
Очевидно, что он должен использовать explode () или что-то глупое в пробелах.Есть ли способ обойти это без преобразования всех пробелов в% 20 или что-то еще (у меня есть много другого контента помимо ссылок, и я не хотел бы конвертировать целый блок контента)?