<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
//return strtoupper($match[1]);
var_dump($match);
}, 'hello-world');
?>
这是对http://php.net/manual/en/functions.anonymous.php上的示例#1的修改。匿名函数中的var_dump输出:
array(2) { [0]=> string(2) "-w" [1]=> string(1) "w" } helloorld
任何人都知道可能会发生什么?
感谢。
答案 0 :(得分:2)
This should explain the regex part.
现在到echo
缺少-w
的部分:如您所见,preg_replace_callback
对$match
执行操作。由于$match[0]
是您匹配的字符串,preg_replace_callback
期望在匿名函数中将替换值作为返回值。您已在示例中跳过该部分,因此替换为空。
答案 1 :(得分:1)
在您的代码中
echo preg_replace_callback('~-([a-z])~', function ($match) {
//return strtoupper($match[1]);
var_dump($match);
}, 'hello-world');
您正在尝试将<{1}}(-([a-z])
匹配)与无替换,因为您的回调会返回。
因此,在字符串-w
中将-w
替换为空(无法转换为空字符串)会为您提供hello-world
。