【问题标题】:PHP regex combine capturing group variable with a numberPHP 正则表达式将捕获组变量与数字结合起来
【发布时间】:2013-03-15 10:47:09
【问题描述】:

例如,我想用margin:0;替换:margin:0px;
这是我想出的正则表达式:$data = preg_replace('/([^\d])0px/', '$1 0', $data);

$1 在本例中代表:

现在我如何将$1 与一个数字结合起来,而不需要 php 将其解释为另一个捕获组变量,并且不使用我上面所做的空格?

【问题讨论】:

    标签: php regex variables capturing-group


    【解决方案1】:

    您可以使用'${1}0'。请参阅PHP documentation on strings 了解更多信息。

    preg_replace documentation 也讨论了这一点。

    顺便说一句,您可以改用这个正则表达式(在 5.2.4 及更高版本中):

    $data = preg_replace('/\D0\Kpx/', '', $data);
    

    \D 匹配任何非数字,相当于[^\d]

    \K 要求匹配它之前的所有内容,但将其排除在匹配本身之外。因此,您不必存储模式的第一部分并将其包含在替换中。

    Here is the documentation on escape sequences.

    【讨论】:

    • 非常感谢。不知道\K,很有用。
    【解决方案2】:

    您是否正在尝试做这样的事情?

    <?php
    
    function replace_px($val, $new_val, $str) {
      return $new_str = str_replace($val . "px", $new_val, $str);
    }
    
    $str = "margin:0px;";
    echo replace_px(0, 0, $str);
    
    ?>
    

    // 输出

    margin:0;
    

    【讨论】:

    • 我不能使用str_replace,因为它会在margin: 10px;“失败”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多