Как получить изображение SRC по классу
У меня есть это:
<a href="/Dealer-Catalog/ManufacturerID-3"><img class="brand-logo" src="http://www.teledynamics.com/tdresources/74c42cb2-dc7f-4548-b820-2946fbe160db.jpg" onerror="this.src='/Content/Css/Images/no_brand_logo_120_48.gif'" alt="ADTRAN"></a>
как получить img src (http://www.teledynamics.com/tdresources/74c42cb2-dc7f-4548-b820-2946fbe160db.jpg)
Я стараюсь много думать, что это был последний:
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$src = $xpath->evaluate("string(//class='brand-logo']/img/@src)");
echo "$src";
4 ответа
Решение
Это неправильный синтаксис XPath. Пытаться
$nodes = $xpath->query("//img[@class='brand-logo']");
$src = $nodes->item(0)->getAttribute('src');
Сначала вы получаете узел, который представляет изображение, чей src вы хотите, затем вы получаете атрибут src. Обратите внимание, что вызов ->query() возвращает DOMNodeList, а не узел.
Попробуй вот так
<?php
$html = '<a href="/Dealer-Catalog/ManufacturerID-3">
<img class="brand-logo" src="http://www.teledynamics.com/tdresources/74c42cb2-dc7f-4548-b820-2946fbe160db.jpg" alt="ADTRAN" />
</a>';
$xml = simplexml_load_string($html);
echo $xml->img['src'];
?>
Попробуй вот так
<?php
$doc=new DOMDocument();
$doc->loadHTML('<a href="/Dealer-Catalog/ManufacturerID-3">
<img class="brand-logo" src="http://www.teledynamics.com/tdresources/74c42cb2-dc7f-4548-b820-2946fbe160db.jpg" alt="ADTRAN" />
</a>');
$xml=simplexml_import_dom($doc); // just to make xpath more simple
$images=$xml->xpath('//img');
foreach ($images as $img) {
echo $img['src'];
}?>
С xpath вы можете запросить атрибут напрямую, string()
дать его значение узла:
$src = $xpath->evaluate("string(//img[@class='brand-logo']/@src)");
Однако мне очень жаль говорить, что я понятия не имею, как это можно сделать с preg_match
в твоем случае;)