PHP - 用引号替换引号 - 正则表达式

时间:2013-04-04 20:50:32

标签: php regex

我有这样的文字:

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

thanks =)

2 个答案:

答案 0 :(得分:0)

没有正则表达式:

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

使用正则表达式:

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

答案 1 :(得分: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);

警告!我不建议在制作时使用此代码,只是想表明这个想法。