如何解决php中preg_replace_callback回调函数传参问题

小编给大家分享一下如何解决php中preg_replace_callback回调函数传参问题,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

站在用户的角度思考问题,与客户深入沟通,找到焉耆网站设计与焉耆网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、做网站、企业官网、英文网站、手机端网站、网站推广、申请域名虚拟主机、企业邮箱。业务覆盖焉耆地区。

preg_replace_callback

这个函数的作用是执行一个正则表达式搜索并且使用一个回调进行替换

preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed

参数说明

  • pattern

要搜索的模式,可以是字符串或一个字符串数组。

  • callback

一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从 subject 中匹配到的结果。回调函数返回真正参与替换的字符串。这是该回调函数的签名:

  • handler ( array $matches ) : string

经常会需要 callback 函数而仅用于 preg_replace_callback() 一个地方的调用。在这种情况下,你可以使用 匿名函数 来定义一个匿名函数作为 preg_replace_callback() 调用时的回调。 这样做你可以保留所有调用信息在同一个位置并且不会因为一个不在任何其他地方使用的回调函数名称而污染函数名称空间。

Example #1 preg_replace_callback() 和 匿名函数

\s*\w|',
        function ($matches) {
            return strtolower($matches[0]);
        },
        $line
    );
    echo $line;
}
fclose($fp);
?>
  • subject

要搜索替换的目标字符串或字符串数组。

  • limit

对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是 -1(无限制)。

  • count

如果指定,这个变量将被填充为替换执行的次数。

如何传参

默认情况下,这个回调函数只会接收$matches这个匹配参数,如果想要传递更多的参数,我们可以采用迂回战术,正所谓条条大路通罗马,我们只要能在匿名函数中访问到需要传递的参数就行。于是我们有两个办法。

1.使用全局变量

$param1 = "test";
preg_replace_callback($pregRule, function ($match) {
    global $param1;
    return $match[1] . $param1 . $match[3];
}

2.使用面向对象加载类

class Scrapy{
   private $param1 = "test";
   public function info(){
      preg_replace_callback($pregRule, function ($match) {
            return $match[1] . $this->param1 . $match[3];
        }
   }
}

通过上面的两种方法我们就可以在回调函数中调用我们想要传入的参数。

看完了这篇文章,相信你对如何解决php中preg_replace_callback回调函数传参问题有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网页题目:如何解决php中preg_replace_callback回调函数传参问题
标题链接:http://ybzwz.com/article/pjsogd.html