例如,我想将margin:0px;
替换为margin:0;
这是我提出的正则表达式:$data = preg_replace('/([^\d])0px/', '$1 0', $data);
$1
代表此示例中的:
。
现在如何将$1
与一个数字组合而不用PHP将其解释为另一个捕获组变量而不像我上面那样使用空格?
答案 0 :(得分:2)
您可以使用'${1}0'
。有关详细信息,请参阅PHP documentation on strings。
preg_replace
documentation也讨论了这一点。
顺便说一句,您可以使用此正则表达式(在5.2.4及更高版本中):
$data = preg_replace('/\D0\Kpx/', '', $data);
\D
匹配任何非数字的内容,相当于[^\d]
。
\K
要求它前面的所有内容都匹配,但要将其从匹配本身中排除。因此,您不必存储模式的第一部分并将其包含在替换中。
答案 1 :(得分: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;