PCRE替换标记样式

时间:2010-06-24 19:42:29

标签: php css regex pcre

我需要一个PCRE表达式(正则表达式)来匹配和替换与标记元素相关的某个属性和值,如下所示:

<div style="width:200px;"></div>

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

我现在所拥有的,由simplehtmldom解析的是纯文本的样式内容,如下所示:

width:200px;

如何匹配CSS属性并将其替换为PHP中的新值?

干杯!

2 个答案:

答案 0 :(得分:2)

([^\s:]+)[\s:]+([^:;]+)

将冒号周围的值提取到反向引用1和2中。

([^\s:]+)[\s:]+(\d+)(\w+)

将执行相同操作,但分别提取值(200)和单位(px)。

if (preg_match('/([^\s:]+)[\s:]+(\d+)(\w+/', $subject, $regs)) {
    $attribute = $regs[1];
    $value = $regs[2];
    $unit = $regs[3];
} else {
    // no match
}

答案 1 :(得分:-2)

preg_replace('~width:200px~', 'width:100px', $subject);