有4个不同的img标签
<img src="img1.jpg" alt="test" />
<img src="img2.jpg" height="21"/>
<img src="img3.jpg" border="1">
<img src="img4.jpg" >
我使用 PHP 代码
preg_match_all('#<img (.*?)([/>| />|>| >])#si',$this->Data,$img);
但是这个PHP代码结果
Array
(
[1] => Array
(
[0] => src="img1.jpg"
[1] => src="img2.jpg"
[2] => src="img3.jpg"
[3] => src="img4.jpg"
)
我想结果:
Array
(
[1] => Array
(
[0] => src="img1.jpg" alt="test"
[1] => src="img2.jpg" height="21"
[2] => src="img3.jpg" border="1"
[3] => src="img4.jpg"
)
你能帮我吗?
试试这个:
preg_match_all('#<img (.*?)'s?/?>#is', $this->Data, $img);
's?
可以选择匹配由可选斜杠/?
解决的空格。
这基本上将从格式良好的 IMG 标记中获取任何内容。(假设属性的值没有任何>(。
要记住的是,正则表达式不是解析 HTML 的正确工具 - 但对于小 - 有限的 - 匹配非常有用。
这看起来像是给了你想要的;
$s = '<img src="img1.jpg" alt="test" />
<img src="img2.jpg" height="21"/>
<img src="img3.jpg" border="1">
<img src="img4.jpg" >';
preg_match_all('~<img's+(.+?)(['s/>]|)>~i', $s, $m);
print_r($m);
外;
数组( ... [1] => 数组 ( [0] => src="img1.jpg" alt="test" [1] => src="img2.jpg" height="21" [2] => src="img3.jpg" border="1" [3] => src="img4.jpg" )顺便说一句,据
我所知,你不需要使用s
标志来preg_match_all
,因为它的匹配*_all
。