<?php
$str = "<ul>
<li>item 1</li>
<li>item 2</li>
</ul>";
$p='!<ul>[^\.]+<li>(.*)</li>[^\.]+</ul>!i';//在这里补充代码,实现正则匹配所有li中的数据
preg_match($p,$str,$matches);
print_r($matches);
echo "\n";
print_r($matches[1]);
Array
(
[0] => Array
(
[0] =>item 1[1] =>item 2)
[1] => Array
(
[0] => item 1
[1] => item 2
)
)
原来是输出的问题,我原来的代码只是输出下标为一的
对啊,为什么他没匹配
item 1</li>
<li>item 2这一部分
不是这样的,他是匹配了<li></li>里面的部分啊,并不是<ul><li> </li></ul>的部分
你这写法匹配的位置不对
得到的是
item 1</li>
<li>item 2
,item 2
这里是不是(.*?)值匹配为item 2了。
开头的<ul>[^\.]+直接化为XXXitem1XX然后接(.*?)了