2012-11-18 211 views
2

如何刪除<table> .... </table>之間換行,並添加\ n各自刪除換行和空格

除權後:

<table border="0" cellspacing="0" cellpadding="0" width="450" class="descriptiontable"><tr> 
<td width="50%" valign="top"> 
<span class="displayb">Model Procesor:</span> Intel Celeron<br><span class="displayb">Frecventa procesor (MHz):</span> 2660<br><span class="displayb">Placa Video:</span> Intel Extreme Graphics 2<br><span class="displayb">Retea integrata:</span> 10/100Mbps, RJ-45<br><span class="displayb">Chipset:</span> Intel 845G<br> 
</td> 
<td width="50%" valign="top"> 
<span class="displayb">Capacitate RAM (MB):</span> 512<br><span class="displayb">Tip RAM:</span> DDR<br> 
</td> 
</tr></table> 

,併成爲:

<table border="0" cellspacing="0" cellpadding="0" width="450" class="descriptiontable"><tr><td width="50%" valign="top"><span class="displayb">Model Procesor:</span> Intel Celeron<br><span class="displayb">Frecventa procesor (MHz):</span> 2660<br><span class="displayb">Placa Video:</span> Intel Extreme Graphics 2<br><span class="displayb">Retea integrata:</span> 10/100Mbps, RJ-45<br><span class="displayb">Chipset:</span> Intel 845G<br></td><td width="50%" valign="top"><span class="displayb">Capacitate RAM (MB):</span> 512<br><span class="displayb">Tip RAM:</span> DDR<br></td></tr></table>\n 

秒。

+0

爲什麼你想刪除空白?你認爲這是一種性能改進嗎?我建議它不會有任何明顯的影響。如果你想加快速度,就要衡量你的時間在哪裏。 –

回答

2
$string = preg_replace('/\s\s+/', '', $string); 

這將刪除多個空格和換行符。

最後,你只需要 「\ n」 添加到結果:

$string = preg_replace('/\s\s+/', '', $string) . "\n"; 

這應該這樣做。

+0

但這不是標籤html

和添加一個\ n @的末尾 – Cosmin

+0

不會這個代碼只適用於Windows風格的行尾,其中換行符有兩個字符? –

+0

那麼,我假設你在服務器端的'$ string'中有你的表格標記。 –

4

我認爲你的意思是你有一個完整的HTML文件/字符串,只想刪除表格內的換行符。

你應該使用DOM解析器來找到你的HTML的相應部分,但這個臨時搭建的正則表達式的解決方案可能工作得很好,爲您提供:

$str = preg_replace('~[\r\n]+(?=(?:(?!<table).)*</table>)~is', '', $str); 
$str = preg_replace('~</table>~i', "$0\n", $str); 

如果您要添加的\n只有當它是沒有的話,你可以用這個去作爲第二更換:

$str = preg_replace('~</table>(?!\n)~i', "$0\n", $str); 

這符合(獨立系統)中的所有換行符,如果他們隨後</table>機智hout <table之間的某處。這當然會導致嵌套表和類似事情的問題。這就是爲什麼你應該使用DOM解析器。

+1

+1現在這是有道理的........... – Anirudha

+0

謝謝你的正則表達式和提示。我知道我需要做什麼。 – Cosmin

0

我找到一種方法,我忘了將它張貼

$content = str_replace('</table',"</table>\n",str_replace("\n","",$str));