Я когда-то ответил, но я не нахожу ответа больше.
Если вы посмотрите на строке (упрощенный/Приукрашено):
<content:encoded><![CDATA[
<p>Lorem Ipsom</p>
<p>
<a href='laura-bertram-trance-gemini-145-1080.jpg'
title='<br>November 2012 calendar from 5.10 The Test<br> <a href="</a>
</p>]]>
</content:encoded>
Вы можете видеть, что у вас есть HTML закодирован внутри Узел значение <content:encoded>
элемента. Итак, сначала вы должны получить значение HTML, который вы уже сделать:
$html = $boo->children('content', true)->encoded;
Затем вам нужно разобрать HTML внутри $html
. С какими библиотеками HTML разбор можно сделать с помощью PHP описан в:
Если вы решили использовать более или менее рекомендуется DOMDocument
для работы, вам нужно только, чтобы получить значение атрибута определенного элемента:
Или для своей сестры библиотеки SimpleXML вы уже используете (так что это более рекомендуется, см, а следующий раздел):
В контексте Вашего вопроса здесь следующий совет:
Вы используете SimpleXML. DOMDocument - это сестра-библиотека, что означает, что вы можете обмениваться между двумя, поэтому вам не нужно изучать полную новую библиотеку.
Например, вы можете использовать только функцию разбора HTML DOMDocument
, но затем импортируйте ее в SimpleXML
. Это полезно, потому что SimpleXML не поддерживает разбор HTML.
Это работает через simplexml_import_dom()
.
Упрощенная шаг за шагом пример:
// get the HTML string out of the feed:
$htmlString = $boo->children('content', true)->encoded;
// create DOMDocument for HTML parsing:
$htmlParser = new DOMDocument();
// load the HTML:
$htmlParser->loadHTML($htmlString);
// import it into simplexml:
$html = simplexml_import_dom($htmlParser);
Теперь вы можете использовать $html
как новый SimpleXMLElement, который представляет собой HTML-документ. Поскольку в ваших фрагментах HTML не было никаких тегов <body>
, в соответствии со спецификацией HTML они помещаются в тег <body>
. Это позволит вам, например, чтобы получить доступ к атрибуту первого <a>
href
внутри второго <p>
элемента в вашем примере: #
// access the element you're looking for:
$href = $html->body->p[1]->a['href'];
Здесь полный вид сверху (Online Demo):
// get the HTML string out of the feed:
$htmlString = $boo->children('content', true)->encoded;
// create DOMDocument for HTML parsing:
$htmlParser = new DOMDocument();
// your HTML gives parser warnings, keep them internal:
libxml_use_internal_errors(true);
// load the HTML:
$htmlParser->loadHTML($htmlString);
// import it into simplexml:
$html = simplexml_import_dom($htmlParser);
// access the element you're looking for:
$href = $html->body->p[1]->a['href'];
// output it
echo $href, "\n";
И что он выводит:
laura-bertram-trance-gemini-145-1080.jpg
«Содержимое в теге, которое я держу в эфионе» ??? Немного больше усилий в написании хорошего вопроса поможет. – str
да, у меня есть обновление моего que – user2249819
возможного дубликата [PHP DOMDocument получения атрибута тега] (http://stackoverflow.com/questions/1597746/php-domdocument-getting-attribute-of-tag) - вы можете не понимать, почему Я предлагаю этот дубликат, см. Мой ответ ниже: http://stackoverflow.com/a/15850774/367456 – hakre