2012-02-19 57 views
3

我有一个PHP脚本,用于检索原始/纯文本文件的内容,并且希望以HTML格式输出此原始文本,但是当它以HTML格式输出时,所有换行符都不再存在。是否有某种PHP函数或其他解决方法可以使这成为可能?有没有什么方法可以用换行符将纯文本转换为HTML?

例如,如果原始文本文件中有这样的文字:

你好
我的名字是

当HTML输出,它会说:

你好我的名字是

有什么方法可以在HTML中保留这些换行符?谢谢。

(如果有帮助,我的脚本获取原始文本文件的内容,把它的变量里面,我只是回声出变量。)

回答

3

你应该看看nl2br,其将换行符(这将不会在HTML文档上显示 - 正如您注意到的那样)到HTML标签

+0

哇 - 就这么容易吗?我以前怎么没有找到这个功能?谢谢你,真棒。 :) – Chrispy 2012-02-19 00:31:19

+0

非常出众和类似所见即所得:http://stackoverflow.com/a/7409591/2266583将单行换行视为换行符,并将双行换行视为新段落 – zanderwar 2016-09-29 02:37:59

0

在您可以使用的html代码中。 <br/>阅读功能http://php.net/manual/en/function.nl2br.php 它将帮助;)

+0

同时有3个答案,全部针对相同功能的答案,你-1他们两个,因为你认为你的答案更好:)谢谢警长。 – czupe 2016-09-30 08:49:40

+0

没问题搭档,我搜索了一个类似的回复,以便指出有些情况下,正确的方向几乎与编写大量的行和示例一样好或者更好的帮助。 这显然只是我的意见:) 祝您有美好的一天! – czupe 2016-10-05 15:08:35

5

有几种方法可以做到这一点:

使用file_get_contents()nl2br()

echo nl2br(file_get_contents('filename.txt')); 

这不会解决特殊实体,如<>&,你“会需要使用htmlspecialchars()

echo nl2br(htmlspecialchars(file_get_contents('filename.txt'))); 

也许更好的解决办法是加载整个文件到阵列file()和迭代槽的所有元素(你可以把线到表或使未来)

$data = file('filename.txt'); 
foreach($data as $line){ 
    echo htmlspecialchars($line) . '<br />'; 
} 

如果你需要处理大量的数据的它会是最好的fopen()fgets()做顺序:

$fp = fopen('filename.txt', 'r') or die('Cannot open file'); 
while($line = fgets($fp)){ 
    echo htmlspecialchars($line) . '<br />'; 
} 
fclose($fp); 
相关问题