Php 如何使用preg_replace删除特定html标记中的所有属性?
考虑一个包含文本字符串的php变量,该文本包含一些html代码,比如说如果我想从元素中删除属性,比如Php 如何使用preg_replace删除特定html标记中的所有属性?,php,html,regex,Php,Html,Regex,考虑一个包含文本字符串的php变量,该文本包含一些html代码,比如说如果我想从元素中删除属性,比如,而不是从 php变量中包含的字符串如下所示: <br id="foo" style="display:none"> <span id="bar">sometext</span> <br id="bun" /> 一些文字 )~”、“\1”、$str); \h匹配任何类型的水平空白字符。只需在php变量中获取id和样式,并根据需要对其执行任何操
,而不是从
php变量中包含的字符串如下所示:
<br id="foo" style="display:none">
<span id="bar">sometext</span>
<br id="bun" />
一些文字
将变成这样:
<br>
<spam id="bar">sometext</span>
<br />
一些文字
注意:我想要一个正则表达式,在这里我可以手动更改标记名,比如:
<?php
$str='<br id="foo" style="display:none">
<spam id="bar">sometext</span>
<br id="bun" />';
$tagname = 'br'
$regex = "regexpar1".$tagname."regexpart2";
echo preg_replace($regex,'',$str);
使用preg\u replace
功能
preg_replace('~(<br)\b[^>]*?(?=\h*\/?>)~', '\1', $str);
preg\u replace(“~(]*?(?=\h*\/?>)~”、“\1”、$str);
\h
匹配任何类型的水平空白字符。只需在php变量中获取id和样式,并根据需要对其执行任何操作。这里就是(记住为每个变量创建唯一的id)
只需在id和样式处重复它们。正则表达式
您可以尝试以下方法:
(<)(br|div)([^>]+?)(\/?\s*>)
/
是此处正则表达式的分隔符。您可以使用任何其他字符,只要它是非字母数字、非反斜杠、非空白字符。这就是为什么在本文的第一个正则表达式中,/
前面有一个\
以下是使用其他分隔符分隔正则表达式的示例:
echo preg_replace( '%(<)(br|div)([^>]+?)(/?\s*>)%', '\1\2\4', $str);
echo preg_replace( '+(<)(br|div)([^>]+?)(/?\s*>)+', '\1\2\4', $str);
echo preg_replace( ',(<)(br|div)([^>]+?)(/?\s*>),', '\1\2\4', $str);
echo preg_替换('%(]+?)(/?\s*>)%,'\1\2\4',$str);
echo preg_替换('+(]+?)(/?\s*>)+'、'\1\2\4'、$str);
echo preg_替换(',(]+?)(/?\s*>),','\1\2\4',$str);
在他的帖子中使用了一个~
。我看不到HTML标记移除和正则表达式之间的联系。我在你的帖子中也没有看到PHP或JScript。刚刚添加了所有这些,感谢你的帮助,无论是关于这个问题还是关于noob问题的帖子。非常感谢你给出的具体答案,非常棒,这有助于理解这个概念,但是在PHP上我在第2行的D:\www\test.php中得到了一个警告:preg\u replace():未知修饰符“(”,当我尝试这样做时:echo preg\u replace(“(]+?)(\/?\s*>)”,“,”,$str);
@ccrez请看我帖子中的更新。非常棒,非常感谢!这正是我所需要的,它就像一个魅力,非常感谢
(<)(br|div)([^>]+?)(\/?\s*>)
echo preg_replace( '/(<)(br|div)([^>]+?)(\/?\s*>)/', '\1\2\4', $str);
echo preg_replace( '%(<)(br|div)([^>]+?)(/?\s*>)%', '\1\2\4', $str);
echo preg_replace( '+(<)(br|div)([^>]+?)(/?\s*>)+', '\1\2\4', $str);
echo preg_replace( ',(<)(br|div)([^>]+?)(/?\s*>),', '\1\2\4', $str);