正则表达式从html标记中去除属性和值

0 php regex preg-replace

嗨,大家好,我对正则表达式很新,你能帮助我吗?

我有一个像这样的字符串"<input attribute='value' >",attribute='value'可以是任何东西,我想做一个preg_replace刚才<input />

如何指定通配符来替换srting中任意数量的任何字符?

像这样? preg_replace("/<input.*>/",$replacement,$string);

非常感谢

Ken*_*ric 10

你有什么:

.*
Run Code Online (Sandbox Code Playgroud)

将匹配"任何角色,并尽可能多.

你的意思

[^>]+
Run Code Online (Sandbox Code Playgroud)

这意味着"任何角色,那不是">",必须至少有一个

或者替代地,

.*?
Run Code Online (Sandbox Code Playgroud)

这意味着"任何角色,但只足以使这条规则有效"

但是不要

使用regexp解析HTML是不好的

使用任何现有的html解析器,DOM库,任何东西,JustNOTNAïVEREGEX

例如:

 <foo attr=">"> 
Run Code Online (Sandbox Code Playgroud)

将正则表达式错误地抓住

'<foo attr=" ' with following text of '">' 
Run Code Online (Sandbox Code Playgroud)

这会引导你到这个正则表达式:

 `<[a-zA-Z]+( [a-zA-Z]+=['"][^"']['"])*)>  etc etc 
Run Code Online (Sandbox Code Playgroud)

在这一点上,你会发现这个可爱的宝石:

 <foo attr="'>\'\"">
Run Code Online (Sandbox Code Playgroud)

你的头会爆炸.

(语法高亮显示验证我的观点,错误地匹配思考我结束了标记.)