[英]preg_match_all pattern html tag issue
有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);
出去
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
使用s
标志,它的cos与*_all
匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.