php正則匹配的問題!

來源:互聯網
上載者:User
$str =<< the theory
my myselef
your yourselef
STR;
$reg = '/^([a-zA-Z]+)\s*\1[a-zA-Z]*$/m';
preg_match_all($reg, $str, $result);
var_dump($result);
?>
下面是匹配的結果,我不太明白,為什麼只有最後一個被匹配到了?
array(2) { [0]=> array(1) { [0]=> string(14) "your yourselef" } [1]=> array(1) { [0]=> string(4) "your" } }


回複討論(解決方案)

$str =<<  
Array(    [0] => Array        (            [0] => the theory            [1] => my myselef            [2] => your yourselef        )    [1] => Array        (            [0] => the            [1] => my            [2] => your        ))

windows 中,換行是 \r\n

把你的目標字串改一下,再仔細考慮一下吧:

$str = "the theory\nmy myselef\nyour yourselef";

windows 中,換行是 \r\n
+1
$匹配\n前或字串結尾,/r 也是一個字元,且不在[a-zA-Z]範圍,但最後一行是字串結尾,就匹配到了

那最後一行 $str =<< the theory
my myselef
your yourselef
STR; 是否也存在換行的問題,是否也存在/r/n呢?我不太明白

$str =<<  
資料的最後一行後面沒有換行
$str =<<資料的最後一行後面有換行  

多謝版主!受教了!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.