2011-04-01 61 views
1

我有一个PHP脚本,它将HTML作为字符串拉入。偶尔它会在BODY标签应用了内联宽度的地方提取代码。如果该宽度为100%,则会抛出一些额外的处理。用PHP替代内联身体宽度

我不认为我可以应用外部样式,因为内联样式可能会取代它。我还希望不必为这么小的东西使用DOM解析器。有没有人有一个快速的方法,我可以找到并取代这个?

+1

如果你解析与正则表达式的HTML,**不要**。改用DOM。 – drudge 2011-04-01 00:42:29

+1

他没有解析它,他正在使用RegEx进行替换。 – 2011-04-01 00:50:47

回答

3
preg_replace("#<body(.*?)>#is", "<body>", $html, 1); 

...

$html = "<body style='width:800px;'></body>"; 
echo preg_replace("#<body(.*?)>#is", "<body>", $html, 1); 

...

<body></body> 
+0

这是完美的!我不知道它是如何工作的。谢谢! – timroman 2011-04-01 00:50:51

+0

'(。*?)'表示匹配任何字符0次或更多次,不确定。 'is'表示对空白不区分大小写。 '(。*?)'是''之间的所有内容。 '1'意味着只替换1,但无论如何都有1个'body'标签。这些是正则表达式,必须:) – 2011-04-01 00:57:14

+0

太棒了,非常感谢你!我的正则表达经验一直局限于字母数字,试图掌握一些更高级的东西。 – timroman 2011-04-01 02:39:32