2013-06-04 104 views
2

我需要找出一種方法來將字符串(下面的例子)拆分爲用php/regex分隔的空格。下面是字符串的一些例子,我的預期輸出:Split StudlyCaps string into words

SomeRANDOMString - >一些隨機字符串
ANOTHERRandomString - >另一個隨機字符串
縮略 - >縮略
字符串 - >字符串

我現在不工作溶液到目前爲止是:

$title = preg_replace("/([a-z])([A-Z])/", "$1 $2", $title); 

,其輸出上述字符串作爲:

一些RANDOMString
ANOTHERRandom字符串
縮略
字符串

回答

4
$title = implode(' ', preg_split('/(?<=[a-z])(?=[A-Z])|(?=[A-Z][a-z])/', 
           $title, -1, PREG_SPLIT_NO_EMPTY))); 

當先前字符爲小寫和下一個字符是大寫的,因此這將在正確的引起分裂正則表達式的(?<=[a-z])(?=[A-Z])部分將匹配如'SomeRANDOM''RandomString'(?=[A-Z][a-z])部分將匹配,當下兩個字符是大寫字母后跟小寫字母,這將導致像'ANOTHERRandom'一個字符串分裂。 PREG_SPLIT_NO_EMPTY標誌防止在字符串的最開始處進行拆分,並使用implode()preg_split()返回的數組轉換爲空格分隔的字符串。

+0

這是完美的。謝謝! – user2112735