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)
谢谢=)
答
类似的东西:
$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
你试过了什么? – 2013-04-04 20:52:22
我试过: preg_replace('/(? dmouse 2013-04-04 20:55:53
为什么在这里的双引号之前没有反斜杠'bundle:a AND id:9 _query _:“'并且最后? – HamZa 2013-04-04 21:05:54