2

php/regex を使用して、文字列 (以下の例) をスペースで区切られた単語に分割する方法を見つける必要があります。以下は、文字列と予想される出力の例です。

SomeRANDOMString -> Some RANDOM String
ANOTHERRandomString -> ANOTHER Random String
ACRONYM -> ACRONYM
String -> String

これまでのところ、私の現在の機能しないソリューションは次のとおりです。

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

上記の文字列を次のように出力します。

Some RANDOMString
ANOTHERRandom String
ACRONYM
String

4

1 に答える 1

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

正規表現の一部は、前の文字が小文字で次の文字が大文字の場合に一致するため、または(?<=[a-z])(?=[A-Z])のような文字列が正しい場所で分割されます。その部分は、次の 2 文字が大文字の後に小文字が続く場合に一致します。これにより、文字列が のように分割されます。このフラグは、文字列の先頭での分割を防ぎ、返された配列をスペースで区切られた文字列に変換するために使用されます。'SomeRANDOM''RandomString'(?=[A-Z][a-z])'ANOTHERRandom'PREG_SPLIT_NO_EMPTYimplode()preg_split()

于 2013-06-04T17:13:12.573 に答える