Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中删除div样式/类的正则表达式_Php_Regex - Fatal编程技术网

在PHP中删除div样式/类的正则表达式

在PHP中删除div样式/类的正则表达式,php,regex,Php,Regex,我想有选择地从字符串中解析出HTML。我使用了strip_标记来允许div,但我不想让div样式/类保留在字符串中。也就是说,我想要: <div class="something">text</div> <div style="something">text</div> 文本 文本 成为: <div>text</div> 文本 在这两种情况下 有人能帮忙吗?谢谢 以下是一个示例: preg_replace('`<

我想有选择地从字符串中解析出HTML。我使用了strip_标记来允许div,但我不想让div样式/类保留在字符串中。也就是说,我想要:

<div class="something">text</div>
<div style="something">text</div>
文本
文本
成为:

<div>text</div>
文本
在这两种情况下

有人能帮忙吗?谢谢

以下是一个示例:

preg_replace('`<div (style="[^"]*"|class="[^"]*")>([^<]*)</div>`i', "<div>$1</div>", $str);
preg_replace('`([^以下是一个示例:

preg_replace('`<div (style="[^"]*"|class="[^"]*")>([^<]*)</div>`i', "<div>$1</div>", $str);

preg_replace('`([^用零替换以下正则表达式:

(?<=<div.*?)(?<!=\t*?"?\t*?)(class|style)=".*?"

(?将以下正则表达式替换为空:

(?<=<div.*?)(?<!=\t*?"?\t*?)(class|style)=".*?"
(?作为regexp的一个选项(这总是让我抓狂),
我建议使用xml将其解析为结构

请参阅php.net及其第一个示例。

作为regexp的一个选项(这总是让我感到害怕), 我建议使用xml将其解析为结构



请参阅php.net及其第一个示例。

我使用OP给出的示例看到了一个问题:)(提示,中继器是贪婪的)实际上,.class是贪婪的。[^“]不是,它在遇到第一个”后停止。不用担心,我在发布之前测试了我的代码(通常至少!)想想看,这是没有意义的。我有一个匹配每个字符的类,但是“.当遇到”?它停止匹配。这与*或任何量词无关。正如我所说的,我用OP的示例测试了我的代码,它工作正常。啊,是的,我明白了…虽然我的只删除了样式/类属性本身,所以任何其他属性都会保留。使用OP给出的示例,我发现了一个问题:)(提示,中继器是贪婪的)事实上,.class是贪婪的。[^“]不是,它在遇到第一个”后停止。不用担心,我在发布之前测试了我的代码(通常至少!)想想看,这没有意义。我有一个匹配每个字符的类,但是“.当它遇到”?它停止匹配。这与*或任何量词无关。正如我所说,我用OP的示例测试了我的代码,它工作正常。啊,是的,我明白了…虽然我的只删除了样式/类属性本身,所以其他属性都保留了。如果有一个属性包含
类=
样式=
类似
?@J怎么办V:这并不能解决它,比如看
。好吧,它现在变得越来越复杂了,但我想我明白了…老实说,如果html是如此糟糕,正则表达式是最不需要担心的:)别管空格了,这个正则表达式不会工作,因为它需要可变长度的lookbehinds和PHP(像大多数风格一样)不要那样做。不管怎样,向后看永远不应该是你的第一选择;几乎总是有一个更简单的方法。啊,那样的话,我向文森特屈服了:)如果有一个属性包含
类=
样式=
比如
?@jv:这不会解决它,例如
。好吧,现在它变得越来越复杂了,但我想我已经解决了……老实说,如果html如此糟糕,regex是最不需要担心的:)不要介意空格,这个正则表达式不起作用,因为它需要可变长度的lookbehinds,而PHP(像大多数口味一样)不这么做。无论如何,lookbehinds不应该是你的第一个选择;几乎总是有一个更简单的方法。啊,在这种情况下,我屈服于vincent:)可能重复的(相关的)可能重复的(相关的)