【问题标题】:i am unable to replacing preg_replace with preg_replace_callback, someone please do it for me我无法用 preg_replace_callback 替换 preg_replace,请有人帮我做
【发布时间】:2017-09-04 21:19:45
【问题描述】:

我正在安装phpfox脚本,安装后显示如下错误,

警告:preg_replace():不再支持 /e 修饰符,请改用 preg_replace_callback - include/library/phpfox/setting/setting.class.php (321)

我刚刚拿到代码,我无法将语法更改为 preg_replace_callback

所以我正在编写下面的代码,请为我转换它,谢谢。 1

$aRow['value_actual'] = preg_replace("/s:(.*):\"(.*?)\";/ise", "'s:'.strlen('$2').':\"$2\";'", $aRow['value_actual']);

2

preg_replace("/\s+/", "", $_SERVER['HTTP_ACCEPT_ENCODING']

3

preg_replace("/(.*?)\.(.*?)$/i", ".$2", $_SERVER['HTTP_HOST']

也请转换第 4 个。

4

preg_replace("/s:(.*):\"(.*?)\";/ise", "'s:'.strlen('$2').':\"$2\";'", (isset($aRow['user_group_id2']) && isset($aRow[$aRow['user_group_id']])) ? $aRow[$aRow['user_group_id']] : $aRow['value_actual']);

【问题讨论】:

  • 您尝试了什么以及您的尝试发生了什么?
  • 实际上我在我的服务器上安装了 phpfox 脚本,它安装得很完美,但是当我进入主页时,它显示以下错误 preg_replace(): The /e 修饰符不再受支持,请改用 preg_replace_callback - 包括/library/phpfox/setting/setting.class.php (321)
  • 您可以访问此链接查看:www.uksocialfanz.com
  • 所以你需要使用preg_replace_callback。也许联系开发人员,或安装更新的版本。

标签: php debugging phpfox


【解决方案1】:

2 和 3 没有 e 修饰符。没事做。 1 次使用:

$aRow['value_actual'] = preg_replace_callback(
'/s:(.*):\"(.*?)\";/is',
function ($m) { return "s:".strlen($m[2]).':"'.$m[2].'";';},
$aRow['value_actual']);

如果您想对其中任何一个进行解释,请更新您的问题。如果你不这样做也没关系。

4

 preg_replace("/s:(.*):\"(.*?)\";/ise", "'s:'.strlen('$2').':\"$2\";'", 
 (isset($aRow['user_group_id2']) && isset($aRow[$aRow['user_group_id']])) ? 
 $aRow[$aRow['user_group_id']] : $aRow['value_actual']);

变成:

 preg_replace("/s:(.*):\"(.*?)\";/is", 
 function ($m) { return "s:".strlen($m[2]).':"'.$m[2].'";';}, 
 (isset($aRow['user_group_id2']) && isset($aRow[$aRow['user_group_id']])) ? 
 $aRow[$aRow['user_group_id']] : $aRow['value_actual']);

【讨论】:

  • 我已经这样做了,但现在它显示了另一种相同类型的错误,这次是不同的页面。所以如果你也可以转换这个,那就太好了。 . preg_replace("/s:(.*):\"(.*?)\";/ise", "'s:'.strlen('$2').':\"$2\";'", ( isset($aRow['user_group_id2']) && isset($aRow[$aRow['user_group_id']])) ? $aRow[$aRow['user_group_id']] : $aRow['value_actual']);preg_replace( "/s:(.*):\"(.*?)\";/ise", "'s:'.strlen('$2').':\"$2\";'", (isset( $aRow['user_group_id2']) && isset($aRow[$aRow['user_group_id']])) ? $aRow[$aRow['user_group_id']] : $aRow['value_actual']);
  • 这些几乎是同一个表达式。但是没问题。如果您用第 4、5、6 点编辑您的问题...,我会更新我的答案。 cmets 中较长的代码很难阅读。
  • 我已经编辑了这个问题,你现在可以为我转换它,提前谢谢。
  • 完成。请注意:phpfox 使用的表达式对于我认为他们所做的任务并不是最佳的。我将它们翻译成回调符号,但我不认可它们。
猜你喜欢
  • 2015-08-09
  • 1970-01-01
  • 2014-02-19
  • 2013-03-05
相关资源
最近更新 更多