gpt4 book ai didi

php - 从段落标签中剥离样式属性

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:29 24 4
gpt4 key购买 nike

我发现这个正则表达式可以从标签中去除样式属性。

$content = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $_POST['content']);

它工作得很好,但我正在尝试找到一种解决方案,只从 <p> 段中去除样式标签:

<h1 style="font: times">Hello</h1>
<p style="font: verdana">World</p>

会变成

<h1 style="font: times">Hello</h1>
<p>World</p>

我尝试过自己修改正则表达式,但我无法解决这个问题,我的正则表达式就失败了。

最佳答案

(*跳过)(*F) 和 \K

关于使用正则表达式解析 html 的所有免责声明,您可以使用此正则表达式:

<(?!p)[^>]*>(*SKIP)(*F)|<p[^>]*\Kstyle\s*=\s*"[^"]*"

查看 the Regex Demo 底部的替换.

示例 PHP 代码

$replaced = preg_replace('~<(?!p)[^>]*>|<p[^>]*\Kstyle\s*=\s*"[^"]*"~',
'',
$yourstring);

解释

这个问题是这个问题中解释的技术的经典案例 "regex-match a pattern, excluding..."

交替的左侧|匹配完成 <non-p tags>然后故意失败,之后引擎跳到字符串中的下一个位置。右侧匹配样式,我们知道它们是正确的,因为它们与左侧的表达式不匹配。

引用

关于php - 从段落标签中剥离样式属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25049140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com