如何用{}替换屏蔽的引号

时间:2017-06-28 17:15:26

标签: php regex preg-replace regex-group

我有一个用{}

替换引号的代码
$message = preg_replace('/"([^"]*)"/', "{$1}", $message);

我如何修改它以替换文本中的屏蔽引号,如

  

\“some text \”

此文中的引号也保持不变。 例如本文

  

\“一些带有字符串”123“\”

的文字
替换后

应该看起来像这样

  

{一些带有字符串“123”的文字}

2 个答案:

答案 0 :(得分:4)

就像以反向方式匹配带引号的字符串一样,有一种解决方法可以匹配正确的部分:

~(\\")([^\\]*(?:\\[^"][^\\]*)*)(\\")~

Live demo

PHP:

$re = <<< 'RE'
~(\\")([^\\]*(?:\\[^"][^\\]*)*)(\\")~
RE;

echo preg_replace($re, '{$2}', $str);

答案 1 :(得分:-1)

我想这会对你有用:

$message = preg_replace("/^\\\"(.*)\\\"$/", "{$1}", $message);