怎么写?
我的数据是个人信息集,有很多个人的自我介绍
姓名:AA
自我介绍:adfasdfasdfasdfas
姓名:BB
自我介绍:adfasdfasdfasdfas
姓名:CC
自我介绍:adfasdfasdfasdfas/姓名:(.*)\r\n自我介绍:(.*)/s  ???
s放哪里?不能放表达式最后(/s)的吧?

解决方案 »

  1.   

    好像不行吧?
    您可以试试看:
    $str="姓名:AA\r\n自我介绍:adfasd\r\nfasdfasdfas\r\n姓名:BB\r\n自我介绍:1111111111111\r\n222222222\r\n姓名:CC\r\n自我介绍:a33333\r\nfasdfa";
    if (preg_match_all("/姓名:(.*)\r\n自我介绍:(.*)/s",$str,$out)){
      print_r($out);
    }
    结果是:
    Array
    (
        [0] => Array
            (
                [0] => 姓名:AA
    自我介绍:adfasd
    fasdfasdfas
    姓名:BB
    自我介绍:1111111111111
    222222222
    姓名:CC
    自我介绍:a33333
    fasdfa
            )    [1] => Array
            (
                [0] => AA
    自我介绍:adfasd
    fasdfasdfas
    姓名:BB
    自我介绍:1111111111111
    222222222
    姓名:CC
            )    [2] => Array
            (
                [0] => a33333
    fasdfa
            ))
      

  2.   

    呵呵 \r\n 也在.* 里面。你可以直接试试  /(.*)/s
      

  3.   

    Array
            (
                [0] => 姓名:AA
    自我介绍:adfasd
    fasdfasdfas
    姓名:BB
    自我介绍:1111111111111
    222222222
    姓名:CC
    自我介绍:a33333
    fasdfa
            )
    你这不就是匹配多行了吗?
      

  4.   

    呵呵,恩,是可以多行
    但是我的内容结构是:数据包含N个人物信息,每个人物信息包含姓名和自我介绍
    要求:将各个人物的信息提取出来而你这样就是将整个原始数据匹配出来嘛,不过我已经将上面的格式匹配出来了
    /姓名:(.[^(自我介绍)]*)\r\n自我介绍:(.[^(姓名:)]*)/s但是实际上我的结构更复杂,还在试验中,无论如何谢谢你啊