PHP 5.6换行不生效:str_replace与nl2br方法均无效求助
解决PHP 5.6中文本换行不生效的问题
你遇到的问题其实是PHP字符串解析规则导致的,咱们来拆解一下原因和解决办法:
问题根源
先看你写的代码:
echo str_replace ('\r\n','<br>','Gshdhdhhdhdhhdhdhd\nGdghdhdhhdhd\nGdgdhfhhdhd\nGgdhdhhdd\nGgdhdhdhhd\nGe hdhdhdhd');
还有你尝试的nl2br写法,字符串都是用单引号包裹的。在PHP里,单引号字符串里的\n不会被解析成换行符,它就是两个普通字符:\和n。所以不管是str_replace找\r\n,还是nl2br找换行符,都找不到目标,自然出不来换行效果。
可行的解决方案
方案1:用双引号包裹字符串(最省心)
把包含\n的字符串换成双引号包裹,PHP会自动把\n解析成实际的换行符,再用nl2br就能完美转换为HTML的<br>标签:
echo nl2br("Gshdhdhhdhdhhdhdhd\nGdghdhdhhdhd\nGdgdhfhhdhd\nGgdhdhhdd\nGgdhdhdhhd\nGe hdhdhdhd");
nl2br本身就是专门用来把换行符转成HTML换行标签的函数,适配\n、\r\n等各种换行格式。
方案2:直接替换单引号里的\n字符
如果必须用单引号(比如字符串里有大量双引号不想转义),那直接替换字符串里的\n字符就行:
echo str_replace('\n', '<br>', 'Gshdhdhhdhdhhdhdhd\nGdghdhdhhdhd\nGdgdhfhhdhd\nGgdhdhhdd\nGgdhdhdhhd\nGe hdhdhdhd');
这里要注意,str_replace的搜索值是'\n'(单引号),对应单引号字符串里的\n字符组合。
额外提醒
如果你的文本是从数据库、文件或者用户输入里获取的实际换行(不是写死在代码里的\n字符),那直接用nl2br就能生效,不需要调整字符串引号。
内容的提问来源于stack exchange,提问作者Sagu K
相关产品推荐
相关产品推荐

