0

我有一个包含

 <img width="10" height="12" scr="https://www.site.com/yughggcfgh">
<img width="11" height="15" scr="https://www.site.com/yughggcfghcvbcvb">
<img width="10" height="12" scr="https://www.site.com/a.jpg">
<img width="10" height="12" scr="https://www.site.com/b.gif">

我想提取数组中没有扩展名的图像的路径,
输出必须如下

ari[1]= <img width="10" height="12" scr="https://www.site.com/yughggcfgh">
ari[2]= <img width="11" height="15" scr="https://www.site.com/yughggcfghcvbcvb"> 
4

2 回答 2

2

你真的应该使用domDocument或一些 html 解析器而不是正则表达式,这是一个例子:

<?php 
$somesource='<img width="10" height="12" src="https://www.site.com/yughggcfgh">
<img width="11" height="15" src="https://www.site.com/yughggcfghcvbcvb">
<img width="10" height="12" src="https://www.site.com/a.jpg">
<img width="10" height="12" src="https://www.site.com/b.gif">';

$xml = new DOMDocument();
@$xml->loadHTML($somesource);
foreach($xml->getElementsByTagName('img') as $img) {
    if(substr($img->getAttribute('src'),-4,1)!='.'){
        $image[] = $img->getAttribute('src');
    }
}

print_r($image);

Array
(
    [0] => https://www.site.com/yughggcfgh
    [1] => https://www.site.com/yughggcfghcvbcvb
)

?>
于 2012-04-04T12:05:39.957 回答
1

正则表达式可能不是适合这项工作的工具,但你可以……</p>

您应该能够通过负面的后向断言来实现您的目标:

preg_match_all('/src=".+?(?<!\.jpg|\.jpeg|\.gif|\.png)"/', $html, $matches);
于 2012-04-04T11:56:42.720 回答