preg_match输出问题
$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配 这句话怎么理解?
$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配 这句话怎么理解?
2017-07-24
正则表达式匹配的一般结果会包括你所有匹配的内容,但是有些的匹配内容不是我们全部要的,例如我们要陪陪的文字源是“hello, my name is xxx”,我们想要提取名字"xxx",然后我们寻找名字的方法是"my name is "后面就是我想要的名字,所以正则表达式为'my name is (\w+)',得到的结果为数组Array([0]=>"my name is xxx" [1]=>"xxx"),但是我们真正有用的是"xxx",而完整模式,我觉得可以用于匹配的结果"xxx"错误了,我们用于检查我们的正则表达式是否有误,会不会陪配到"my naem is xxx"。
实际案例:
======================================
<?php
$str = "<ul>
<li>item 1</li>
<li>item 2</li>
</ul>";
//在这里补充代码,实现正则匹配所有li中的数据
$p='/<li>(.*)<\/li>/i';
preg_match_all($p,$str,$matches);
print_r($matches);
?>
=======================================
输出结果为
Array
(
[0] => Array(
[0] =><li>item 1</li>
[1] => <li>item 2</li>
)
[1] => Array(
[0] => item 1
[1] => item 2
)
)
=======================================
举报