Preg_replace_callback 返回 2 个值
我有以下代码,但我不太喜欢 reg exp,因为它们太令人困惑了:
<?php
$r = '|\\*(.+)\\*|';
$w = '';
$s = 'hello world *copyMe* here';
function callbk($str){
print_r($str);
foreach($str as $k=>$v) {
echo $v;
}
}
$t = preg_replace_callback($r,'callbk',$s);
//output: Array ( [0] => *copyMe* [1] => copyMe ) *copyMe*copyMe
?>
我的问题是为什么同时存在“*copyMe*”和“copyMe”? 我希望得到其中之一,而不是两者都得到。 如有任何帮助,我们将不胜感激。
I have the following code but I'm not a big fan of reg exp as they are too confusing:
<?php
$r = '|\\*(.+)\\*|';
$w = '';
$s = 'hello world *copyMe* here';
function callbk($str){
print_r($str);
foreach($str as $k=>$v) {
echo $v;
}
}
$t = preg_replace_callback($r,'callbk',$s);
//output: Array ( [0] => *copyMe* [1] => copyMe ) *copyMe*copyMe
?>
my question is why is there both "*copyMe*" and "copyMe"?
i was hoping to get either one or the other, not both.
any help would be appriciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为您正在使用捕获表达式
()
。如果省略括号,您只会得到*copyMe*
。Because you are using a capturing expression
()
. If you omit the brackets you will only get*copyMe*
.