2

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

$1在本例中将代表:

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

4

2 回答 2

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;
于 2013-03-15T11:00:49.260 回答
2

您可以使用'${1}0'. 有关更多信息,请参阅有关字符串的 PHP 文档

preg_replace文档也讨论了这一点。

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

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

\D匹配任何不是数字的东西,相当于[^\d].

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

这是关于转义序列的文档

于 2013-03-15T10:53:05.330 回答