如何使用php替换嵌套引号中的双引号

时间:2018-10-11 06:43:14

标签: php regex string quotes

我通过富文本框在数据库中注册了一个动态字符串。这样。

<p style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size:"
medium;">LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISCING ELIT.</p>

<ol style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size:" 
medium;"><li>BONUM VALITUDO: MISER MORBUS.</li></ol>

我尝试替换style标记中的双引号。但是我没有。如何使用PHP。

顺便说一句。该字符串在富文本框中通常看起来很正常,但是使用嵌套的引号保存数据库

我的Rich Textbox是:Summernote

1 个答案:

答案 0 :(得分:0)

使用preg_replace_callback()运行正则表达式。代码选择style=""内部和回调函数中的内容,将"替换为'

$newStr = preg_replace_callback("/(?<=style=\")([^>]+)(?=\">)/", function($matches){
    return str_replace('"', "'", $matches[1]);
}, $str);

请注意,对于样式的最后一部分,您的样式不是'。因此,您可以将此代码添加到样式末尾的'中。

$newStr = preg_replace_callback("/(?<=style=\")([^>]+)(?=\">)/", function($matches){
    $replace = str_replace('"', "'", $matches[1]);
    return substr($replace, -1) == "'" ? $replace : $replace."'";
}, $str);

demo中查看结果