我是PHP
和正则表达的新手。我正在阅读一些在线示例,并附带了这个示例:
<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld
?>
在php.net
中,但令我惊讶的是它不起作用并且一直收到错误:
PHP Parse error: parse error, unexpected T_FUNCTION
为什么会出错?
答案 0 :(得分:6)
您正在使用PHP的Anonymous functions:具有无名称的功能。
当我运行你的程序时,我没有得到任何错误。可能是你在PHP < 5.3
上尝试。
自PHP 5.3.0起可以使用匿名函数。
如果PHP
版本正在创建问题,您可以将程序重新编写为不使用匿名函数:
<?php
// a callback function called in place of anonymous function.
echo preg_replace_callback('~-([a-z])~','fun', 'hello-world');
// the call back function.
function fun($match) {
return strtoupper($match[1]);
}
?>
答案 1 :(得分:2)
此示例适用于PHP 5.3。您可能使用较旧的东西(例如,PHP 5.2)。
请改为尝试:
<?php
function callback($match) {
return strtoupper($match[1]);
}
echo preg_replace_callback('~-([a-z])~', 'callback', 'hello-world');
答案 2 :(得分:1)
您使用的是PHP 5.3.0之前的版本吗?在该版本之前的版本中不支持Anonymous functions。
您可以使用phpinfo页面检查您的版本。
答案 3 :(得分:1)
这应该适用于5.3之前的版本:
echo preg_replace_callback(
'/-([a-z])/',
create_function( '$arg', 'return strtoupper($arg[1]);' ),
'hello-world'
);
此致
RBO