2011-03-03 34 views
0

讓我們假設我有這樣正則表達式把引號圍繞每個字

$str = "this is my string"; 

我需要以正則表達式的字符串有

$str = "'this','is','my','string'"; 

我知道,這一個

preg_match_all("#\w+#",$str,$mth); 

我可以用單個單詞獲得數組,但我無法達到我的目標。 在此先感謝。

回答

4
$str = "'" . implode("','", explode(' ', $str)) . "'" 

不需要正則表達式。

+0

謝謝邁克。我選擇你的答案,並給所有其他用戶+1。感謝大家。 – 2011-03-03 19:01:51

+0

謝謝。不要忘記打勾,正式將其標記爲已回答。 – 2011-03-03 19:03:50

+0

別擔心。我正在等那個論壇讓我這麼做;) – 2011-03-03 19:05:50

2

你可以使用explode代替:

$parts = explode(" ", $str); 

因此,「$零件」將是[「這」,「是」,「我的」,「串]然後,你可以通過運行陣列。圍繞每一個字的數組,並添加引號和最後做:

$final = implode(",", $parts); 
+1

在其他類型的空格或多空格中發生純粹爆炸將失敗。 – erenon 2011-03-03 18:55:52

1

如果你有話的陣列,它只是一個簡單的CONCAT:

$quoted = ''; 
foreach($words as $word) { 
    $quoted .= " '".$word."' "; 
} 
+0

Missing the commas .. – mellamokb 2011-03-03 18:55:56

1

您可以使用join/implode來生成最終字符串。

$str = "'". join("','", $mth). "'"; 

或者你可以只使用直接preg_replace

$str = "'". preg_replace("#\w+#", "','", $str). "'"; 
2

你必須使用正則表達式?您可以使用str_replace所有的空間更改爲序列','然後追加單引號開頭和結尾:

$str = "'" . str_replace(" ", "','", $str) . "'"; 
0
def str = "Fred,Sam,Mike,Sarah"<br/> 
str.replaceAll(~"(\\\b)", "'") 

這在Groovy效果很好。 (版本 - 1.8.4)