尝试匹配 HTML 的 src 部分<img>标签正则表达式

问题描述 投票:0回答:2
php regex html-parsing src text-extraction
2个回答
2
投票

为此使用

DOM
或其他解析器,不要尝试使用正则表达式解析 HTML。

示例:

$html = <<<DATA
<img alt="" src="//i.imgur.com/tApg8ebb.jpg" title="Some manly skills for you guys&lt;p&gt;&lt;span class='points-q7Vdm'&gt;18,736&lt;/span&gt;&nbsp;&lt;span class='points-text-q7Vdm'&gt;points&lt;/span&gt;  : 316,091 views&lt;/p&gt;">
<img src="//i.imgur.com/SwmwL4Gb.jpg" width="48" height="48">
<img src="//s.imgur.com/images/blog_rss.png">
DATA;

$doc = new DOMDocument();
$doc->loadHTML($html); // load the html

$xpath = new DOMXPath($doc);
$imgs  = $xpath->query('//img');

foreach ($imgs as $img) {
   echo $img->getAttribute('src') . "\n";
}

输出

//i.imgur.com/tApg8ebb.jpg
//i.imgur.com/SwmwL4Gb.jpg
//s.imgur.com/images/blog_rss.png

如果您希望将结果存储在数组中,您可以这样做..

foreach ($imgs as $img) {
   $sources[] = $img->getAttribute('src');
}

print_r($sources);

输出

Array
(
    [0] => //i.imgur.com/tApg8ebb.jpg
    [1] => //i.imgur.com/SwmwL4Gb.jpg
    [2] => //s.imgur.com/images/blog_rss.png
 )

-1
投票
$pattern = '/<img.+src="([\w/\._\-]+)"/';

我不确定您使用的是哪种语言,因此引用语法会有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.