问答详情
源自:3-6 查找所有匹配结果

这结果是怎么回事…

<?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]);


提问者:坚持MyDream 2016-09-02 10:28

个回答

  • 慕尼黑8438124
    2016-09-02 10:53:06

    Array
    (
       [0] => Array
           (
               [0] =>item 1[1] =>item 2)

       [1] => Array
           (
               [0] => item 1
               [1] => item 2
           )
    )

    原来是输出的问题,我原来的代码只是输出下标为一的

  • 慕尼黑8438124
    2016-09-02 10:50:40

    对啊,为什么他没匹配

    item 1</li>

                <li>item 2这一部分


  • 慕尼黑8438124
    2016-09-02 10:49:34

    不是这样的,他是匹配了<li></li>里面的部分啊,并不是<ul><li>  </li></ul>的部分

  • 慕尼黑8438124
    2016-09-02 10:36:18

    你这写法匹配的位置不对

  • 慕尼黑8438124
    2016-09-02 10:34:58

    得到的是

    item 1</li>

                <li>item 2

    ,item 2


  • 坚持MyDream
    2016-09-02 10:32:58

    http://img.mukewang.com/57c8e43200014e2602100324.jpg

    这里是不是(.*?)值匹配为item 2了。  

    开头的<ul>[^\.]+直接化为XXXitem1XX然后接(.*?)了