我有一个包含
的html文件 <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">
答案 0 :(得分: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
)
?>
答案 1 :(得分:1)
正则表达式可能不适合这项工作,但是你去......
您应该可以通过negative lookbehind assertions实现目标:
preg_match_all('/src=".+?(?<!\.jpg|\.jpeg|\.gif|\.png)"/', $html, $matches);