如何在preg_replace中划分$ 1?

时间:2013-02-03 16:58:33

标签: php regex preg-replace

我想转换html文档中的所有尺寸。 ** px的所有内容都应除以4.因此100px将变为25px。

例如:

<div style="height:100px;"></div>

应该成为

<div style="height:25px;"></div>

这是我写的一个PHP代码。但它不起作用。

$content = "<div style=\"height:100px;\"></div>";
$regex = "#([0-9]*)px#";
$output = preg_replace($regex,"$1/4",$content);

我该怎么办?

3 个答案:

答案 0 :(得分:3)

作为preg_replace_callback的替代方法,您可以使用e修饰符来评估替换为php:

$content = "<div style=\"height:100px;\"></div>";
$regex = "#([0-9]*)px#e";
$output = preg_replace($regex,"round($1/4).'px'",$content);

答案 1 :(得分:0)

使用http://php.net/manual/en/function.preg-replace-callback.php和这样的回调函数

function divideBy4($m) {
   return ceil($m[1]/4);
}

答案 2 :(得分:0)

<?php
$content = "<div style=\"height:100px;\"></div>";
$regex = "#([0-9]*)px#";

$output = preg_replace_callback($regex, 
   create_function('$matches', 
   'return ceil($matches[1]/4)."px";'), 
   $content);
?>

<?php
$content = "<div style=\"height:100px;\"></div>";
$regex = "#([0-9]*)px#";
$output = preg_replace_callback($regex, 'myfunc', $content);
function myfunc($matches){
 return ceil($matches[1]/4).'px';
}
?>