使用 PHP 获取 img src

2022-08-30 09:55:24

我想在此示例中将 SRC 属性转换为变量:

<img border="0" src="/images/image.jpg" alt="Image" width="100" height="100" />

例如 - 我想得到一个变量。重要!src 属性将是动态的,因此它不能被硬编码。有没有快速简便的方法来做到这一点?$foo = "/images/image.jpg"

谢谢!

编辑:图像将是一个巨大的字符串的一部分,该字符串基本上是新闻故事的内容。所以图像只是其中的一部分。

EDIT2:此字符串中将有更多的图像,我只想获取第一个图像的src。这可能吗?


答案 1

使用HTML解析器,然后用以下公式评估您要查找的值:DOMDocumentDOMXpath

$html = '<img id="12" border="0" src="/images/image.jpg"
         alt="Image" width="100" height="100" />';

$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$src = $xpath->evaluate("string(//img/@src)"); # "/images/image.jpg"

或者对于那些真正需要节省空间的人:

$xpath = new DOMXPath(@DOMDocument::loadHTML($html));
$src = $xpath->evaluate("string(//img/@src)");

对于那里的单行:

$src = (string) reset(simplexml_import_dom(DOMDocument::loadHTML($html))->xpath("//img/@src"));

答案 2

您最好使用DOM解析器进行这种HTML解析。请考虑以下代码:

$html = '<img id="12" border="0" src="/images/image.jpg"
         alt="Image" width="100" height="100" />';
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$xpath = new DOMXPath($doc);
$nodelist = $xpath->query("//img"); // find your image
$node = $nodelist->item(0); // gets the 1st image
$value = $node->attributes->getNamedItem('src')->nodeValue;
echo "src=$value\n"; // prints src of image

输出:

src=/images/image.jpg

推荐