【问题标题】:Preg_replace_callback returns 2 valuesPreg_replace_callback 返回 2 个值
【发布时间】:2011-03-01 17:32:25
【问题描述】:

我有以下代码,但我不是 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”? 我希望得到一个或另一个,而不是两者。 任何帮助都会得到帮助。

【问题讨论】:

    标签: php regex replace callback preg-replace


    【解决方案1】:

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

    【讨论】:

    • 不错的一个:)我认为括号组的东西,但这样做的伎俩;)
    • 也只是一个简短的说明:最好的做法是使用/ 作为分隔符编写您的正则表达式,而不是|
    猜你喜欢
    • 2015-07-25
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多