PCRE 替换标记样式

发布于 2024-09-06 21:56:09 字数 424 浏览 5 评论 0原文

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

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

进入

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

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

width:200px;

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

干杯!

I need a PCRE expresssion (regex) to match and replace a certain attribute and value related to a markup element, something like this :

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

into

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

What I have now, parsed by simplehtmldom is the style content in plain text, like this :

width:200px;

How can I match the CSS attribute and replace it with the new values in PHP?

Cheers!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤凫 2024-09-13 21:56:09
([^\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
}
([^\s:]+)[\s:]+([^:;]+)

will extract the values around the colon into backreferences 1 and 2.

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

will do the same but extract the value (200) and the unit (px) separately.

if (preg_match('/([^\s:]+)[\s:]+(\d+)(\w+/', $subject, $regs)) {
    $attribute = $regs[1];
    $value = $regs[2];
    $unit = $regs[3];
} else {
    // no match
}
寂寞陪衬 2024-09-13 21:56:09
preg_replace('~width:200px~', 'width:100px', $subject);
preg_replace('~width:200px~', 'width:100px', $subject);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文