2

我不知道 php regex 我希望从<img src="www.google.com/exampleimag.jpg">我的 html 中提取所有图像标签我如何使用 preg_match_all 来做到这一点

感谢 SO 社区为您提供宝贵的时间

好吧,我的情况是这样的,没有整个 html dom,而只是一个带有 img 标签的变量 $text="this is a new text <img="sfdsfdimg/pfdg.fgh" > there is another iamh <img src="sfdsfdfsd.png"> hjkdhfsdfsfsdfsd kjdshfsd dummy text

4

2 回答 2

4

不要使用正则表达式来解析 HTML。相反,DOMDocument出于这个原因,请使用类似的东西:

$html = 'Sample text. Image: <img src="foo.jpg" />. <img src="bar.png" />';
$doc = new DOMDocument();
$doc->loadHTML( $html );

$images = $doc->getElementsByTagName("img");

for ( $i = 0; $i < $images->length; $i++ ) {
  // Outputs: foo.jpg bar.png
  echo $images->item( $i )->attributes->getNamedItem( 'src' )->nodeValue;
}

如果您愿意,还可以获取图像 HTML 本身:

// <img src="foo.jpg" />
echo $doc->saveHTML ( $images->item(0) );
于 2012-05-01T06:13:08.487 回答
1

您无法使用 regex 解析 HTML。你最好使用 DOM 类。它们使从有效的 HTML 树中提取图像变得非常容易。

$doc = new DOMDocument ();
$doc -> loadHTML ($html);
$images = $doc -> getElementsByTagName ('img'); // This will generate a collection of DOMElement objects that contain the image tags
于 2012-05-01T06:13:30.660 回答