2014-04-28 32 views
0

我有一個字符串:忽略,如果特定的字符匹配

$str = "yellow;yellow\;er;yellowest"; 

我使用使preg_split這樣的:

preg_split("/;/", $str); 

但我希望得到的結果是這樣的:

array(
    "yellow", 
    "yellow;er", 
    "yellowest" 
) 

但結果是不正確的。

所以其實我想要做的就是串在;分裂,但如果;面前有一個\,它一直呆在剛剛;,取出\,而不是有分裂它。所以它必須在;而不是\;,如果有\;它必須刪除\字符。喜歡的東西用繩子:

echo "Hello There \"Jacques\""; 

給出:

你好 「雅克」

而且不只是:

你好

+0

你不能在同一時間做到這一點。使用Explosion Pills回答,並在用strtr使用array_map之後用';;替換'\;'。 –

回答

2

您可以使用負回顧後,以確保;是前面沒有\

preg_split('/(?<!\\\);/', $str) 
+0

謝謝,它的工作 –

相關問題