Preg_replace_callback 返回 2 个值

发布于 2024-09-05 11:49:45 字数 476 浏览 4 评论 0原文

我有以下代码,但我不太喜欢 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

jJeQQOZ5 2024-09-12 11:49:46

因为您正在使用捕获表达式 ()。如果省略括号,您只会得到 *copyMe*

Because you are using a capturing expression (). If you omit the brackets you will only get *copyMe*.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文