Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中的PREG_REPLACE和PREG_REPLACE_EVAL_Mysql_Regex_Preg Replace - Fatal编程技术网

MySQL中的PREG_REPLACE和PREG_REPLACE_EVAL

MySQL中的PREG_REPLACE和PREG_REPLACE_EVAL,mysql,regex,preg-replace,Mysql,Regex,Preg Replace,我正在使用MySQL中的PREG_REPLACE函数,到目前为止,一切都正常。然而,我现在的目标是在列中查找pre标记中的实体并对其进行编码。所以最终我想得到这个: <pre> <strong>Hello World!</strong> </pre> SELECT PREG_REPLACE('/<pre>(.*?)<\\/pre>/sm', '\\1', '<pre><strong>Hell

我正在使用MySQL中的PREG_REPLACE函数,到目前为止,一切都正常。然而,我现在的目标是在列中查找
pre
标记中的实体并对其进行编码。所以最终我想得到这个:

<pre>
    <strong>Hello World!</strong>
</pre>
SELECT PREG_REPLACE('/<pre>(.*?)<\\/pre>/sm', '\\1', '<pre><strong>Hello World</strong></pre>');
'); 现在我想将
\\1
替换为“替换为
编码实体('\\1')
。显然,它可以是任何其他函数,例如
上限
,但
上限('\\1'))
给出的不多。我有点喜欢PHP的
PREG\u REPLACE
实现中的
PREG\u REPLACE\u EVAL
的想法,它允许以下内容:

preg_replace(“/(]*>)/e”,
“'\\1'.strtoupper('\\2'.'\\3'”,
$html(正文);;

关于如何在MySQL中实现类似的东西,有什么想法吗?或者可能我走错了方向?谢谢!

除非您想修改UDF的源代码以添加该功能,否则在MySQL中是无法实现的。我建议您选择您最喜欢的编程语言并编写一个程序来为您进行更新,或者确保他的修改是在数据进入数据库之前执行的。

除非您想修改UDF的源代码以添加该功能,否则在MySQL中无法做到这一点。我建议您选择您最喜欢的编程语言并编写一个程序为您进行更新,或者确保在数据进入数据库。

你确定pre不会与其他pre元素嵌套吗?@FailedDev是的,我很确定,至少在我的情况下是这样,但你是对的,这是我们应该注意的。谢谢!你不能注意。如果是这样的话,正则表达式对于这项任务不是一个好的解决方案。如果你100%确定pre元素不会成功tain其他pre元素我可以为您当前的问题提供解决方案。@FailedDev我肯定,但请注意,我正在寻找一个MySQL解决方案,而不是在SQL转储上运行的Python脚本;)您确定pre不会与其他pre元素嵌套吗?@FailedDev是的,我非常确定,至少在我的情况下是这样,但您是对的,这是我们需要的应该注意。谢谢!你不能注意。如果是这种情况,正则表达式对于这个任务不是一个好的解决方案。如果你100%确定pre元素不会包含其他pre元素,我可以为你当前的问题提供一个解决方案。@FailedDev我肯定,但请注意,我正在寻找一个MySQL解决方案,而不是一个可以解决这个问题的Python脚本在SQL转储上操作;)
SELECT PREG_REPLACE('/<pre>(.*?)<\\/pre>/sm', '\\1', '<pre><strong>Hello World</strong></pre>');
preg_replace("/(<\/?)(\w+)([^>]*>)/e", 
    "'\\1'.strtoupper('\\2').'\\3'", 
    $html_body);