2011-03-31 63 views
0

我对于正则表达式有绝对的经验,所以我遇到了一个小问题。 我需要用height="auto"width="auto"替换所有height="*"width="*" -html标签。RegEx调整HTML对象的大小

我可以用什么正则表达式在PHP中完成此操作?
谢谢!

+0

我不知道你为什么会想这样做,但是,这不是”添加一个风格更容易? * {height:auto; width:auto} – 2011-03-31 15:28:39

+0

[你不能用正则表达式解析(X)HTML](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/ 1732454#1732454)你没有经验的事实不会让它变得更好。 – unholysampler 2011-03-31 15:30:07

+0

我该怎么做? – Emil 2011-03-31 15:30:29

回答

2

请注意,这仅适用于文字星号字符。对于通配符,更新后应该使用正则表达式。

你不需要正则表达式这一点,只有两个str_replace()

$html = str_replace (' height="*"', ' height="auto"', $html); 
$html = str_replace (' width="*"', ' width="auto"', $html); 

更新

您可以使用正则表达式虽然。它需要更多的资源,但可以增加一些rudamentary检查(因此,例如height="*"不会被改变的时候不是一个元素中):

preg_replace ('/(<[^>]+ (height|width)=)"[^"]*"/i', '$1"auto"', $html); 
+0

How ..? (愚蠢的最低charcount) – Emil 2011-03-31 15:30:14

+0

@Emil编辑。我添加了一些例子。 – vbence 2011-03-31 15:35:55

+0

我很确定Emil的问题中的'*'是指通配符,而不是字面星号...... – 2011-03-31 15:45:31