Php 预匹配所有模式html标记问题
有4种不同的img标签Php 预匹配所有模式html标记问题,php,regex,preg-match-all,Php,Regex,Preg Match All,有4种不同的img标签 <img src="img1.jpg" alt="test" /> <img src="img2.jpg" height="21"/> <img src="img3.jpg" border="1"> <img src="img4.jpg" > 我想得出以下结论: Array ( [1] => Array ( [0] => src="img1.jpg" [1] =>
<img src="img1.jpg" alt="test" />
<img src="img2.jpg" height="21"/>
<img src="img3.jpg" border="1">
<img src="img4.jpg" >
我想得出以下结论:
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#u match_all(“##is”,$this->Data,$img);
\s?
可以选择匹配由可选斜杠/?
解决的空白
这将从格式良好的img标签中获取任何内容。(假设属性值中没有任何>)
需要记住的是,正则表达式不是解析html的正确工具,但对于小型有限匹配,它非常有用
preg_match_all('#<img (.*?)\s?/?>#is', $this->Data, $img);
$s='1!'
';
preg_match_all('~src=“img2.jpg”height=“21”
[2] =>src=“img3.jpg”border=“1”
[3] =>src=“img4.jpg”
)
顺便说一句,据我所知,你不需要为preg\u match\u all
使用s
标志,因为它是匹配的*\u all
试着去掉(.*)|/>| si
后面的空格。我不明白最后一句话。s
修饰符和preg\u match\u all
方法之间没有冲突/重叠。我怀疑您正在考虑在Perl、JavaScript和其他一些风格中使用的g
标志来指定全局匹配。PHP不支持g
标志;它使用preg\u match\u all
实现这一点。
preg_match_all('#<img (.*?)\s?/?>#is', $this->Data, $img);
$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"
)