我想要構建一個PHP字符串替換/正則表達式函數,它需要一個字符串與換行符和空格的任何序列,並將其替換爲單線進給。如何用一個換行符替換包含任何換行符和空格序列的字符串
這是可能的,如果是這樣,它將如何完成?
我想要構建一個PHP字符串替換/正則表達式函數,它需要一個字符串與換行符和空格的任何序列,並將其替換爲單線進給。如何用一個換行符替換包含任何換行符和空格序列的字符串
這是可能的,如果是這樣,它將如何完成?
*是*一個很好的資源,但OP是問一個具體的問題,你沒有回答它。 – 2011-03-15 20:07:52
我認爲這樣做很簡單,學習基礎知識。 – slezica 2011-03-15 21:34:54
確實如此,但是這個答案的總體增加了多少值,無論是對於這個Q&A還是StackOverflow呢?特別是在這種情況下,該特定網站似乎每天至少推薦一次。 – 2011-03-15 22:36:45
你可以嘗試:
= preg_replace('/\s*[\r\n]+\s*/', "\n", $text);
它會尋找出一個單一的CR或LF檢測Unix,Windows和舊的Mac換行符。之後,任何空格(空格,製表符,CR,LF)將被刪除。
\s*
以忽略前一行的空格。\s*
也可以是[\r\n ]*
。另請參見https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world如果你想完善這個正則表達式。
如果空間/符可以來以任何順序和任何潛在的操作系統,那麼這將是一個試探性的方法:
$fixed_string = preg_replace('/[\s\n\r]+/', "\n", $bad_string);
它會尋找一個或更多的空白(\ S) ,換行符(\ n)和回車(\ r)字符,並用換行符替換它們。
在PHP中,'\ s'等同於'[\ t \ f \ r \ n]',所以正則表達式中的'[\ s \ r \ n]'可能只是'\ s'。另外,我認爲OP只想匹配其中至少有一個換行符的序列,並且您沒有執行該操作。 – 2011-03-15 19:54:11
Marc B - 完美的作品。多謝!和艾倫摩爾,你是對的,我從這兩個解決方案得到的結果是相同的。 – Glenn 2011-03-17 14:37:19
現在我需要找到一個解決方案,它將使用'\ n'替換所有空白區域,但只有在空白區域存在'\ n'時纔會使用'\ n'。我懷疑這不是一個正則表達式問題(但如果我錯了,請糾正我)。再次感謝您的幫助! – Glenn 2011-03-17 14:43:13
你有一個輸入字符串的例子,你期望輸出看起來像什麼? – 2011-03-15 18:33:07
任何空格和換行符序列都應該成爲一個換行符?空格=>換行? – 2011-03-15 18:35:45