2010-08-26 735 views
1

對於stackoverflow我相當新,所以我不知道這個問題之前曾被問過,但我似乎找不到任何過去的問題暗示答案。任何幫助真的很感激,並提前感謝。如何使用正則表達式忽略空格和回車內的文本

我有這樣的文字:

{ 
    1282837200, -- [1] 
    "Type", -- [2] 
    "Name", -- [3] 
    "Reason", -- [4] 
    Amount, -- [5] 
    }, -- [1] 
    { 
    1282838220, -- [1] 
    "Type", -- [2] 
    "Name", -- [3] 
    "Reason", -- [4] 
    Amount, -- [5] 
    }, -- [2] 

,我需要創建一個正則表達式,並提取必要的數據。我瞭解如何使用PHP中的正則表達式從源文件中提取數據,使用沒有「空格」或回車符的源文本。

但我需要幫助創建一個表達式,其中包括此源代碼中包含的空白等。

+0

現在源文本已經發布,stackoverflow已經基本上刪除了很多的空白 – user415263 2010-08-26 16:46:01

+0

我很困惑。如果上面的文本是源代碼,那麼你想在哪裏插入空格?輸出應該是什麼樣子? – stillstanding 2010-08-26 16:51:28

+0

你究竟想要在文本中匹配什麼(什麼是「必要數據」)?你試過什麼樣的正則表達式?更改正則表達式以匹配您想要的文本而不是匹配空格/換行符可能會更容易。例如'/ [\ w \ d] +/im'這樣簡單的事情可能會做你想做的事情,或者至少讓你開始。 – 2010-08-26 17:08:41

回答

0

\s是空白的符號,它可能包含換行符,也可能不包含換行符,無論如何它們有[\r\n],忽略這些就是這樣。你也可以告訴你到底想要做什麼,甚至可以發佈你到目前爲止的正則表達式,所以如果你願意,我可以進一步幫助你。

編輯:我只是猜測,你想要的正則表達式可能是這樣的:

/\s*{[\s\n\r]*^\s*(\d+).*[\s\n\r]*^\s*"([^"]+)".*[\s\n\r]*^\s*"([^"]+)".*[\s\n\r]*^\s*"([^"]+)".*[\s\n\r]*^\s*(\w+).*[\s\n\r]*^\s*},.*[\s\n\r]*^/m 

這一塊匹配,並且在brackers忽略的數字。 /m開關觸發多行模式。

0

如果您嘗試刪除所有空格,請嘗試以下操作: $string = preg_replace('/\s+/s', '', $string);

\s+匹配一個或多個空格,製表符和換行符。 s/s告訴正則表達式將字符串作爲一個整體,而不是一次一行。