PHP - 引号内更换报价 - 正则表达式

问题描述:

我有这样的文字: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('/(? dmouse 2013-04-04 20:55:53

+0

为什么在这里的双引号之前没有反斜杠'bundle:a AND id:9 _query _:“'并且最后? – HamZa 2013-04-04 21:05:54

类似的东西:

$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); 

警告!我不建议在生产中使用此代码,只是试图展示这个想法。

没有正则表达式:

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

用正则表达式:

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

这改变了字符串中的所有双引号,我试图改变双引号内的双引号。 输出: 条件AND查询:“条件AND查询:\”查询:\“condition:a \”\“”AND条件 – dmouse 2013-04-04 21:09:53