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
说明
mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit] )
本函数的行为几乎和 preg_replace() 一样,除了不是提供一个 replacement 参数,而是指定一个 callback 函数。该函数将以目标字符串中的匹配数组作为输入参数,并返回用于替换的字符串。
所以,我们可以这样使用这个函数:
PHP代码:
-
<?php
-
// 此文本是用于 2002 年的,
-
// 现在想使其能用于 2003 年
-
$text =
"April fools day is 04/01/2002/n " ;
-
$text .=
"Last christmas was 12/24/2001/n " ;
-
-
// 回调函数
-
function next_year
(
$matches
)
{
-
// 通常:$matches[0] 是完整的匹配项
-
// $matches[1] 是第一个括号中的子模式的匹配项
-
// 以此类推
-
return
$matches
[
1
] .
(
$matches
[
2
]
+1
) ;
-
}
-
-
-
"|(d{2}/d{2}/)(d{4})|" ,
-
"next_year" ,
-
$text
) ;
-
-
// 结果为:
-
// April fools day is 04/01/2003
-
// Last christmas was 12/24/2002
-
?>