gpt4 book ai didi

php - nl2br() 创建一个额外的新行

转载 作者:可可西里 更新时间:2023-11-01 07:37:57 27 4
gpt4 key购买 nike

我正在尝试将描述文本字段插入到数据库中。

我以前只是在做这样的事情:

$group_description = mysql_real_escape_string($_POST['group_description']);

但它产生了问题,因为当我从数据库中取出东西时,它们显示为\n\r 字符串而不是新行。

这是一个存在该问题的页面示例:

http://www.comehike.com/hikes/hiking_group.php?hiking_group_id=48

所以我尝试通过像这样添加 nl2br 来修复它:

$group_description = mysql_real_escape_string(nl2br($_POST['group_description']));

但这只是插入了一个额外的行:(这是当前问题的示例:

http://www.comehike.com/hikes/hiking_group.php?hiking_group_id=50

这是我使用的插入语句的示例:

$insert_group_sql =  'INSERT INTO hiking_groups( title , group_description ) VALUES ( "'.$group_name.'" , "'.$group_description.'" ) ';

执行此操作的正确方法是什么?

这是我用来显示 $group_description 的代码

          //Convert all urls to links
$group_description = preg_replace('#([\s|^])(www)#i', '$1http://$2', $group_description);
$pattern = '#((http|https|ftp|telnet|news|gopher|file|wais):\/\/[^\s]+)#i';
$replacement = '<a href="$1" target="_blank">$1</a>';
$group_description = preg_replace($pattern, $replacement, $group_description);

$group_description = str_replace("\'" , "'", $group_description );
$group_description = nl2br($group_description);

/* Convert all E-mail matches to appropriate HTML links */
$pattern = '#([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.';
$pattern .= '[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)#i';
$replacement = '<a href="mailto:\\1">\\1</a>';
$group_description = preg_replace($pattern, $replacement, $group_description);

最佳答案

首先,我建议您按照 Spudley 的建议,将其以原始形式保存在数据库中,并在显示时对其进行格式化。

nl2br()应该可以工作,所以我建议您检查输入数据以准确查看正在输入的内容(如果您在将其存储在数据库中之前不对其进行格式化,这样做会更容易)。它所做的是接受\n、\n\r、\r\n 和\r 并插入一个 <br/>。反而。例如,您应该检查\n 和\r 之间是否没有空格。

此外,请确保您只使用 nl2br()在一个地方,因为它不替换新行,它只是插入 <br/> (也就是说,如果你做 nl2br(nl2br($group_description)) 你会得到两个 <br/> )

更新:

我在附加代码中看到,当您显示描述时,您已经有一个 nl2br() .您需要删除其中一个,以便只添加 <br/>一次。

此外,代替这个:

      $group_description = str_replace("\'" , "'", $group_description );
$group_description = nl2br($group_description);

试试这个:

      $group_description = stripslashes($group_description);
$group_description = nl2br($group_description);

那应该删除所有 mysql_real_escape_string() 的 sanitizer 做了,应该可以解决文本中显示\n\r的问题。

关于php - nl2br() 创建一个额外的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com