回车符('\ n'和'\ r')未计算为特殊字符

时间:2013-12-11 11:57:12

标签: php function utf-8 carriage-return

我使用textarea在我的网站上写评论。注释保存在SQLite DB中。

我的问题是当我尝试从数据库中检索我的评论时,为了用<p>标签替换每个回车(在显示给用户之前)。

我首先尝试nl2br功能,但它运行正常,我的代码中出现了很多<br/>

然后我尝试了:

substr_count($article->texte, '\n');
substr_count($article->texte, '\r');

但返回结果始终为0。这让我感到惊讶,因为我认为nl2br会取代\n\r字符。

我错过了什么吗?

mb_detect_encoding($article->texte); //returns UTF8

2 个答案:

答案 0 :(得分:1)

仅在使用双引号时才会计算\ n和\ r \ n等表达式,因此请尝试“\ n”和“\ r”

答案 1 :(得分:1)

你需要理解PHP在字面上解释单引号内的文本,但扩展双引号内的内容;如果你这样做,你会得到不同的结果

substr_count($article->texte, "\n");

要回答你的问题,使用nl2br是最快的,但如果你真的想用“&lt; / p&gt;&lt; p&gt;”替换“\ n”的每一个出现位置然后做:

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