2013-04-04 51 views
-4

我有這樣的文字:PHP - 引號內更換報價 - 正則表達式

$var = 'bundle:a AND id:9 _query_:" bundle:b AND _query_:"bundle:c AND _query_:"bundle:d" " "'; 

,並希望以下的輸出:

bundle:a AND id:9 _query_:" bundle:b AND _query_:\"bundle:c AND _query_:\"bundle:d\" \"" 

編輯1:

我試着用:

preg_replace('/(?<!_:|_:)"(?=[^"]*?"(([^:])|([,}])))/', '\\"', $var) 

謝謝=)

+0

你試過了什麼? – 2013-04-04 20:52:22

+0

我試過: preg_replace('/(?<!_:| _:)「(?= [^」] *?「(([^:])|([,}])))/' ,'\\'',$ qq) – dmouse 2013-04-04 20:55:53

+0

爲什麼在這裏的雙引號之前沒有反斜槓'bundle:a AND id:9 _query _:「'並且最後? – HamZa 2013-04-04 21:05:54

回答

0

類似的東西:

$var = 'bundle:a AND id:9 _query_:" bundle:b AND _query_:"bundle:c AND _query_:"bundle:d" " "'; 

$start = strpos($var, '"'); 
$end = strrpos($var, '"'); 

$result = substr($var, 0, $start + 1) . 
      str_replace('"', '\\"', substr($var, $start + 1, $end - $start - 1)) . 
      substr($var, $end); 

警告!我不建議在生產中使用此代碼,只是試圖展示這個想法。

0

沒有正則表達式:

str_replace("\"", "\\\"", $var) 

用正則表達式:

preg_replace("/\"/", "\\\"", $var) 
+0

這改變了字符串中的所有雙引號,我試圖改變雙引號內的雙引號。 輸出: 條件AND查詢:「條件AND查詢:\」查詢:\「condition:a \」\「」AND條件 – dmouse 2013-04-04 21:09:53