我已经从HTML文件中分离了一堆字符串,例如:
<img alt="" src="//i.imgur.com/tApg8ebb.jpg" title="Some manly skills for you guys<p><span class='points-q7Vdm'>18,736</span> <span class='points-text-q7Vdm'>points</span> : 316,091 views</p>">
<img src="//i.imgur.com/SwmwL4Gb.jpg" width="48" height="48">
<img src="//s.imgur.com/images/blog_rss.png">
我正在尝试创建一个正则表达式,它将获取img标记的 src =“ URL ”部分,以便我稍后可以基于一些替换它其他条件。很多引号都给了我最大的问题,我对Regex来说还是比较新的,所以很多技巧都是我不知道的,
提前致谢
答案 0 :(得分:2)
使用DOM
或其他解析器,不要尝试使用正则表达式解析HTML。
示例:
$html = <<<DATA
<img alt="" src="//i.imgur.com/tApg8ebb.jpg" title="Some manly skills for you guys<p><span class='points-q7Vdm'>18,736</span> <span class='points-text-q7Vdm'>points</span> : 316,091 views</p>">
<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 :(得分:-1)
$pattern = '/<img.+src="([\w/\._\-]+)"/';
我不确定您使用的是哪种语言,因此引用语法会有所不同。