簡體   English   中英

多行PHP正則表達式問題

[英]Multiline PHP Regex problem

我已經嘗試在這里和Google中查找...但是我不知道自己在做什么錯了:(

我有這段文字:

C 1 title
comment 1

C 2 title2
comment 2

C 3 title3
comment 3

現在...我想做的是

  1. 在開始時檢查C。
  2. 捕捉號碼
  3. 捕捉瓷磚
  4. 捕捉評論

我正在嘗試使用以下表達式:

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
        )

)

正如您在Ideone上看到的那樣

為了使您的比賽保持良好的分組,您可能需要嘗試:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM