2013-06-12 32 views
1

我有一個字符串的來源通常是這樣的PHP TRIM()不是「文本」

word1 
     phrase with more words than one 
      a phrase prefaced by whitespace that is not whitespace in code 
    wordX 

注意!單詞和短語前的空格以裸眼形式出現,但未使用「trim()」進行修剪。

有沒有什麼方法可以使用Trim()或preg_replace()來保留短語內的空格但在外部修剪它(看起來像空白但不是)。

編輯:我不知道什麼「字符」空白前後的單詞和短語是空格。

+0

trim()只在開始和結束時清除一串空格......在上下文中trim()沒有函數...所以你必須使用preg_replace()來做到這一點 – donald123

回答

5

這將替換所有空白字符(空格,製表符,和換行符),以一個空格:

$output = preg_replace('!\s+!', ' ', $input);

編輯:

對於第一個空白,您可以trim()它,或改用此:

$output = preg_replace('!^\s+!', '', preg_replace('!\s+!', ' ', $input));

我認爲這可能做爲一個RegExp,如果RegExpu guru設法做到這一點,我希望這個人可以接受他的回答。

+0

幾乎工作。它仍然在開始時留下一個空白的charachter。我可以通過「醜陋的編碼」來解決這個問題,即查看第一個字符,如果沒有被識別爲字符,我將它刪除。但是,仍然不會很高興。還是謝謝。迄今爲止我看到的最好的正則表達式來處理這個難題。 – Adergaard

+0

我承認這個問題有點含糊。例如,不清楚發佈的示例字符串是否應視爲一個字符串或四個字符串。 (downvote不是我,順便說一句) – Yoshi

+0

@Yoshi謝謝你沒有downvoting它,我很感激。當我看到一個downvote時,我有點震驚,我很高興看到這不是你。對真正的downvoter:請解釋一下? –