[英]Multiline PHP Regex problem
我已經嘗試在這里和Google中查找...但是我不知道自己在做什么錯了:(
我有這段文字:
C 1 title
comment 1
C 2 title2
comment 2
C 3 title3
comment 3
現在...我想做的是
我正在嘗試使用以下表達式:
preg_match_all("/^C (\d*) (.*)\n(.*)$/im", $body, $match);
但僅適用於第一組=(
關於我在做什么錯的任何提示???
謝謝!!!!
它按預期工作。
片段:
<?php
$body = 'C 1 title
comment 1
C 2 title2
comment 2
C 3 title3
comment 3';
preg_match_all("/^C (\d*) (.*)\n(.*)$/im", $body, $match);
print_r($match);
?>
產生以下輸出:
Array
(
[0] => Array
(
[0] => C 1 title
comment 1
[1] => C 2 title2
comment 2
[2] => C 3 title3
comment 3
)
[1] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[2] => Array
(
[0] => title
[1] => title2
[2] => title3
)
[3] => Array
(
[0] => comment 1
[1] => comment 2
[2] => comment 3
)
)
為了使您的比賽保持良好的分組,您可能需要嘗試:
preg_match_all("/^C (\d*) (.*)\n(.*)$/im", $body, $match, PREG_SET_ORDER);
代替。
HTH
Ideone運行: PHP Version => 5.2.12-pl0-gentoo
我也在運行的機器上對其進行了測試(並得到相同的結果): PHP Version => 5.3.3-1ubuntu9.5
但是我無法想象這是一個版本控制的東西(至少不是在5.x版本中)。 也許您的換行符是Windows風格的? 嘗試使用此正則表達式:
"/^C +(\d*) +(.*)\r?\n(.*)$/im"
我使用換行符\\r?\\n
而不只是\\n
以便匹配Windows和Unix風格的換行符,並且還用+
替換了單個空格,以解決可能的兩個(或更多)空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.