2009-10-18 61 views
1

我要清理一些解析的文本,如替换文本功能

\ n中说,\ r \ n \ r \ n \ r \ n我看着你的眼睛我亲爱的\ r \ n \ r \ n我看见绿色滚动的森林\ r \ n \ r \ n我看到远处的天空\ r \ n \ r \ n他们变成了雨\ r \ n \ r \ n \ r \ n我看到高耸的鹰。 。更多\ n

所以我想摆脱“\ n”,“\ r \ n”,“\ r \ n \ r \ n”,“\ r \ n \ r \ n \ r \ n“,”\ r \ n \ r \ n \ r \ n \ r \ n“和”\ r“。这就是我的解析文本中出现的所有组合。

有没有办法在PHP中做到这一点?

回答

1

什么

$text = str_replace(array("\n", "\r"), '', $text); 

,将删除所有新行字符。例如,如果您希望将它们作为新行,我会将替换为<br />(如果还是更好,请使用PHP的nl2br()),或将其标准化为正常文本,例如\n

+1

或只使用内置的nl2br(http://php.net/manual/en/function.nl2br.php) – 2009-10-18 23:57:38

+0

哦,是的 - 那个人完全放弃了我的想法。 – alex 2009-10-19 00:00:13

+0

完美的作品,不可能有更好的希望。谢谢! – 2009-10-19 00:13:40

2

如果你只是想换行1,而不是多,我建议这样的:

$clean = preg_replace(array("/\r+/","/(\n){2,}/"),array("","\n"),$text); 

否则str_replace函数来去掉换行符或nl2br将做的工作。你也可以适应正则表达式与BR标签更换1个以上的换行:

$clean = preg_replace(array("/\r+/","/\n+/"),array("","<br />"),$text);