preg_replace 具有替换功能

发布于 2024-11-07 07:27:19 字数 638 浏览 1 评论 0原文

如何将 preg_replace 与函数一起用作替换参数?我收到此代码错误。

function getInfo($id,$slot){
  if(!$id){ return '<b>Error</b> Id Not Returned. Please contact [email protected] for more information.'; }
  $mm = mysql_query("SELECT * FROM `users` WHERE `id`='".$id."'");
  $mma = mysql_fetch_assoc($mm);
  $p = $mma[$slot];
  return $p;
  //return $id; <- Debug (Returns ID given)
}
$post = preg_replace(
  "/\[CallName]([^]]+)\[\/CallName\]/", 
  getInfo('\\1',"fullname"), 
  $post
);

How do you use preg_replace with a function as the replacement parameter? I'm getting an error with this code.

function getInfo($id,$slot){
  if(!$id){ return '<b>Error</b> Id Not Returned. Please contact [email protected] for more information.'; }
  $mm = mysql_query("SELECT * FROM `users` WHERE `id`='".$id."'");
  $mma = mysql_fetch_assoc($mm);
  $p = $mma[$slot];
  return $p;
  //return $id; <- Debug (Returns ID given)
}
$post = preg_replace(
  "/\[CallName]([^]]+)\[\/CallName\]/", 
  getInfo('\\1',"fullname"), 
  $post
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独陪着我 2024-11-14 07:27:19

e 修饰符现在是 已弃用,改为preg_replace_callback

使用示例:

$x = 'abcd-efg-hijk-lmnop';

$x = preg_replace_callback(
  '/-(.)/', //pattern
  function($matches) { //callback
    return strtoupper($matches[1]);
  }, 
  $x //subject
);

echo $x; //abcdEfgHijkLmnop

The e modifer is now deprecated in favor of preg_replace_callback.

Sample usage:

$x = 'abcd-efg-hijk-lmnop';

$x = preg_replace_callback(
  '/-(.)/', //pattern
  function($matches) { //callback
    return strtoupper($matches[1]);
  }, 
  $x //subject
);

echo $x; //abcdEfgHijkLmnop
霊感 2024-11-14 07:27:19

我认为您忘记了 preg_replace 函数中的 e 修饰符 (PREG_REPLACE_EVAL),需要此修饰符来将替换字符串评估为 PHP 代码。它应该是这样的:

$post = preg_replace('~\[CallName\]([^]]+)\[/CallName\]~e', 'getInfo("$1", "fullname")', $post);

请参阅本手册细节。

I think you forgot e modifier (PREG_REPLACE_EVAL) in preg_replace function, this modifier is needed to evaluate replacement string as PHP code. It should be like this:

$post = preg_replace('~\[CallName\]([^]]+)\[/CallName\]~e', 'getInfo("$1", "fullname")', $post);

See this manual for for details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文