偶尔晕一次何妨!?preg_match_all("/forum=27(.*)(title)/smU",$content,$matches);

解决方案 »

  1.   

    <?
    $content="<a href=topic.cgi?forum=27&topic=17268&show=125 title=\"我喜欢的衣服..title ";
    preg_match_all("/forum=27(.*) title{1}/sm",$content,$matches);
    print_r($matches[0]);
    ?>
      

  2.   

    加U不是贪婪模式吗?我昨天猛地找在PHP里怎么设置非贪婪呢!!另外to mrshelly:
    为什么在title{1}前加一个空格就可以了呢?我曾经也这样写过,但是没有加到空格,所以没成功
      

  3.   

    U是Ungreedy的意思,非贪婪show=125 title
    注意第一个title前面是有空格的,所以可以取到。
      

  4.   

    or you can use (.*?)or in your case, you really should be doing"/forum=27(\S+)\s+(title)/"
      

  5.   

    . 匹配\n以外的所有字符
    加s修饰符后,.同时也匹配\n(.*)不是可以代表任何字符吗?我后面加s了
    是的在
    $content="<a href=topic.cgi?forum=27&topic=17268&show=125 title=\"我喜欢的衣服..title ";
    preg_match_all("/forum=27(.*)(title)/sm",$content,$matches);

    (.*)是27以后直到title前的字符,由于是默认的贪婪模式,所以要匹配到第二个title前
    如是非贪婪模式
    "/forum=27(.*)(title)/smU"则只匹配到第一个title前为什么在title前加一个空格就可以了呢?
    因为$content中的两个title前面分别是空格和.,即
    " title"和".title"
    所以"/forum=27(.*) (title)/smU"
    只会匹配到" title"而不会匹配到".title"
    若第二个title前也是空格,那么也是要匹配到第二个title的(在贪婪模式下)