gpt4 book ai didi

javascript - Preg 替换已弃用,正在尝试修复

转载 作者:行者123 更新时间:2023-11-27 23:30:32 26 4
gpt4 key购买 nike

我刚刚升级到 PHP 7,并一直在努力解决与已弃用函数相关的错误,并取得了很大成功。

遗憾的是,我在修复“在交互式可折叠 javascript 中查看 php 数组”代码的新 preg 替换方法时遇到了麻烦。

以下代码:

function print_r_tree($data)
{

// capture the output of $this->print_r_tree
$out = print_r($data, true);

// replace something like '[element] => <newline> (' with <a href="javascript:toggleDisplay('...');">...</a><div id="..." style="display: none;">
$out = preg_replace('/([ \t]*)(\[[^\]]+\][ \t]*\=\>[ \t]*[a-z0-9 \t_]+)\n[ \t]*\(/iUe',"'\\1<a href=\"javascript:toggleDisplay(\''.(\$id = substr(md5(rand().'\\0'), 0, 7)).'\');\">\\2</a><div id=\"'.\$id.'\" style=\"display: none;\">'", $out);

// replace ')' on its own on a new line (surrounded by whitespace is ok) with '</div>
$out = preg_replace('/^\s*\)\s*$/m', '</div>', $out);

// print the javascript function toggleDisplay() and then the transformed output
echo '<script language="Javascript">function toggleDisplay(id) { document.getElementById(id).style.display = (document.getElementById(id).style.display == "block") ? "none" : "block"; }</script>'."\n$out";

}

生成此警告。警告:preg_replace():不再支持/e 修饰符,请使用 preg_replace_callback

删除第一个“preg_replace”中的“e”会破坏 JavaScript 的功能。我也尝试了一些 preg_replace_callback 方法。

我一直在尝试使用此链接 Replace preg_replace() e modifier with preg_replace_callback帮助我理解出了什么问题,但我认为 JavaScript 使我的问题变得复杂。

我希望有人能够引导我完成这个,关于我的代码?

提前致谢。

最佳答案

e 修饰符位于第一个 $out 变量中。要转换它,您需要正确使用 preg_replace_callback():

$out = preg_replace_callback('/([ \t]*)(\[[^\]]+\][ \t]*\=\>[ \t]*[a-z0-9 \t_]+)\n[ \t]*\(/iU', "callbackFunction", $out);

function callbackFunction($matches) {
return "'".$matches[1]."<a href=\"javascript:toggleDisplay(\''.(\$id = substr(md5(rand().'".$matches[0]."'), 0, 7)).'\');\">".$matches[2]."</a><div id=\"'.\$id.'\" style=\"display: none;\">'";
}

看到在 preg_replace_callback 中,我们使用 callbackFunction 定义了第二个参数,该字符串被解析以调用该函数,并传递一个包含匹配项的数组。因此,替换是在 callbackFunction() 函数中,而匹配是 matches[X]

更多信息:

http://php.net/manual/es/function.preg-replace-callback.php

祝你好运!

关于javascript - Preg 替换已弃用,正在尝试修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615769/

26 4 0
文章推荐: javascript - 使用intellij idea开发时gulp.watch不起作用
文章推荐: javascript - 简单闭包与带有嵌套函数返回的闭包
文章推荐: javascript - 从路线获取属性
文章推荐: php - 如何从