preg_replace_callback()怎样使用类中的回调函数 preg_replace_callback(): Requires argument 2

preg_replace_callback()怎样使用类中的回调函数

转载自:http://wells.osall.com/blog/index.php?uid=1&m=content&p=291
在开发Sylvan的过程中,使用到了 preg_replace_callback() 函数。但是在类中使用这个函数呼叫类中的函数来处理字符串时,却发生了找不到回调函数的错误报告:preg_replace_callback() requires argument 2, [...],to be a valid callback。到底是什么原因呢?

在PHP手册上,是这样描述preg_replace_callback()函数的:


preg_replace_callback

(PHP 4 >= 4.0.5, PHP 5)

preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换

说明

mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit] )

本函数的行为几乎和 preg_replace() 一样,除了不是提供一个 replacement 参数,而是指定一个 callback 函数。该函数将以目标字符串中的匹配数组作为输入参数,并返回用于替换的字符串。



所以,我们可以这样使用这个函数:
PHP代码:

  1. <?php
  2.   // 此文本是用于 2002 年的,
  3.   // 现在想使其能用于 2003 年
  4.   $text = "April fools day is 04/01/2002/n " ;
  5.   $text .= "Last christmas was 12/24/2001/n " ;
  6.  
  7.   // 回调函数
  8.   function next_year ( $matches ) {
  9.     // 通常:$matches[0] 是完整的匹配项
  10.     // $matches[1] 是第一个括号中的子模式的匹配项
  11.     // 以此类推
  12.     return $matches [ 1 ] . ( $matches [ 2 ] +1 ) ;
  13.   }
  14.  
  15.               "|(d{2}/d{2}/)(d{4})|" ,
  16.               "next_year" ,
  17.               $text ) ;
  18.  
  19.   // 结果为:
  20.   // April fools day is 04/01/2003
  21.   // Last christmas was 12/24/2002
  22. ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值