2011-04-01 69 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