嗨,大家好,我对正则表达式很新,你能帮助我吗?
我有一个像这样的字符串"<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)
你的头会爆炸.
(语法高亮显示验证我的观点,错误地匹配思考我结束了标记.)