这可能看起来像是一个骗局,但请放心不是 - 我已经搜索了SO以及网络的其他部分来解决我的问题并最终找到相同的不足"解决方案"一遍又一遍.无论如何,这里是:
我将用户输入从textarea保存到MySQL数据库(在WordPress环境中,但我认为这对于这个问题不应该重要).稍后从数据库中检索它以显示给站点后端的管理员.当用户使用换行符提交文本时(即按Enter键)会出现问题.
示例字符串可能如下所示:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
Run Code Online (Sandbox Code Playgroud)
字符串中没有行尾字符("\n","\ r"或类似字符).
我正在使用nl2br()它来生成HTML输出,但这还不够.结果是:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
Run Code Online (Sandbox Code Playgroud)
据我所知,这是预期的nl2br()结果,因为插入标签并不应该首先替换换行符?
但是我需要的格式是这样的:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
Run Code Online (Sandbox Code Playgroud)
如果字符串中有EOL字符,例如"\n",我用其中任何一个str_replace()或者preg_replace()用它来完成它,但我不知道如果没有字符那么用什么针来提供这些函数首先.
我可以手动访问数据库中的相关字段,为每个换行符点击Backspace,以及我以后想要对字符串工作的内容.所以我知道我需要以上格式.
我有一个文本文件,其中包含文字字符串\r\n.我想用实际换行符(\n)替换它.
我知道正则表达式/\\r\\n/应该匹配它(我已经在Reggy中测试过了),但是我无法在PHP中使用它.
我尝试了以下变化:
preg_replace("/\\\\r\\\\n/", "\n", $line);
preg_replace("/\\\\[r]\\\\[n]/", "\n", $line);
preg_replace("/[\\\\][r][\\\\][n]/", "\n", $line);
preg_replace("/[\\\\]r[\\\\]n/", "\n", $line);
如果我只是尝试替换反斜杠,它可以正常工作.一旦我添加一个r,它就找不到匹配项.
我正在阅读的文件编码为UTF-16.
编辑:
我也尝试过使用过str_replace().
我现在认为这里的问题是文件的字符编码.我尝试了以下,它确实有效:
$testString = "\\r\\n";
echo preg_replace("/\\\\r\\\\n/", "\n", $testString);
Run Code Online (Sandbox Code Playgroud)
但它不适用于我从我的文件中读取的行.
如何读取显示html标记并解释文件的.txt \n文件.
我正在使用脚本php来读取这些文件:
echo readfile("file.txt");
Run Code Online (Sandbox Code Playgroud)
谢谢.