这涉及到一个问题at my blog.
我的提供商最近要求我从PHP 5.2升级到PHP 5.4。这又要求我更新WordPress。
自双重更新以来,注释中的所有换行符都呈现为“rn”,因此,如果键入以下内容:
Hi
<br><br>
Hello
渲染的内容是
HirnHello
如果我编辑注释以修复它们,则我输入的所有换行符在单击“保存”时都会转换回“rn”。
临时回滚到PHP 5.2对这个问题没有影响。
我简单地想,我可以通过更新我的主题(K2)来解决这个问题。这并没有解决问题,并且产生了一系列新的(不相关的)问题,所以我已经回滚了该更新。
浏览这个网站,我看到一些关于这个问题和类似问题的零散引用,但没有迹象表明它曾经很普遍,也没有任何解决方案。
有人能猜出是什么导致了这种情况,甚至更好的是,如何修复它吗?
更新:我找到一个名为wp-comments-post.php
, 其中包含以下行:
$comment_content = ( isset($_POST[\'comment\']) ) ? trim($_POST[\'comment\']) : null;
我把
trim($_POST[\'comment\'])
内部a
nl2br()
, 这有点帮助。而不是渲染为
HirnHello
现在渲染为
Hi<br>
rn<br>
rnHello
(或诸如此类的事;我可能忘了有多少
rn
\'s显示)。
这是进步,但我还是想摆脱rn
\'s、 大概我可以用str_replace
? 但我是个业余爱好者,对语法不太清楚。我最初的几次猜测没有成功。
与此同时,我仍然想知道为什么这个问题首先会出现。
最合适的回答,由SO网友:Steven Landsburg 整理而成
上述答案(“原来是这样”)终究不是答案。使用此处描述的修复,我提交的评论被正确呈现,但其他人提交的评论却没有正确呈现(即使我是通过与其他人相同的评论界面提交的)。想想看吧
无论如何,真正的解决办法是恢复wp评论帖子。php恢复到其原始形式(消除了根据前面的回答添加的str\\u替换),并转向一个名为comments的文件。php(这是K2主题的一部分),通过替换行解决了问题
<?php comment_text(); ?>
使用
<?php nl2br(comment_text()); ?>
这绝对有效。为什么突然有必要这样做仍然是个谜。
SO网友:Steven Landsburg
因此,我通过编辑文件wp comments post解决了这个问题。php,其中显示以下行:
$comment_content = ( isset($_POST[\'comment\']) ) ? trim($_POST[\'comment\']) : null;
在这一行,我改变了
trim($_POST[\'comment\'])
至
str_replace("\\r\\n",\'<br \\>\',trim($_POST[\'comment\']))
我通过多次尝试和错误发现了这一点。我仍然不知道是什么首先导致了这个问题(当然,这个问题还在继续;它只是在每次发生时自动修复)。
这一经历只会强化我的信念,即升级运行良好的软件总是一个坏主意。