PHP str_替换,\r\n为MySQL中真正的新行

PHP str_替换,\r\n为MySQL中真正的新行,php,Php,我有一个带标签的文本,我想把它作为新行保存到MySQL数据库中。不是HTML标签 例如: $string='此处有一些带标记的文本。' 我想将其保存到MySQL中,如下所示: 一些带有 标签在这里 为此,您需要更换什么样的权利?谢谢。来试试这个。这将替换所有到的\r\n 您可以按照您的建议使用str_replace $string = 'some text with<br>tags here.'; $string = str_replace('<br>', "\r\n",

我有一个带标签的文本,我想把它作为新行保存到MySQL数据库中。不是HTML标签

例如:

$string='此处有一些带标记的文本。'

我想将其保存到MySQL中,如下所示:

一些带有 标签在这里


为此,您需要更换什么样的权利?谢谢。

来试试这个。这将替换所有到的\r\n

您可以按照您的建议使用str_replace

$string = 'some text with<br>tags here.';
$string = str_replace('<br>', "\r\n", $string);
您可以使用htmlentities-将所有HTML字符转换为实体,并使用HTML_entity_decode将HTML实体转换为字符

$string = 'some text with<br>tags here'

$a = htmlentities($string);

$b = html_entity_decode($a);

echo $a; // some text with&lt;br&gt;tags here

echo $b; // some text with<br>tags here
尝试:

mysql\u real\u escape\u字符串


PHP中已经有一个函数可以将新行转换为名为nl2br的br。然而,事实并非如此。相反,您可以创建自己的函数,如下所示:

function br2nl($string)
{
    $breaks = array("<br />","<br>","<br/>");  
    return str_ireplace($breaks, "\r\n", $string); 
}
然后,无论何时您想要使用它,只需按如下方式调用它:

$original_string = 'some text with<br>tags here.';
$good_string = br2nl($original_string);
有三件事值得一提:

最好按照用户输入的方式将数据存储在数据库中,然后在检索数据时进行转换。当然,这取决于你在做什么。 某些系统(如Windows)使用\r\n。某些系统(如Linux和Mac)使用\n。某些系统(如旧版Mac系统)允许用户\r使用新行字符。鉴于此,特别是如果您选择使用第1点。在上面,您可能更喜欢使用PHP常量PHP\u EOL,而不是\r\n。这将提供正确的新行字符,无论您在哪个系统上。 我在上面发布的方法将比preg_replace更有效。但是,它没有考虑非标准HTML,例如和其他变体。如果需要考虑这些变化,则应使用preg_replace函数。话虽如此,人们可以过度思考所有可能的变化,但仍然无法解释所有变化。例如,考虑属性和空白的许多其他组合。
$string = 'some text with<br>tags here'

$a = htmlentities($string);

$b = html_entity_decode($a);

echo $a; // some text with&lt;br&gt;tags here

echo $b; // some text with<br>tags here
function safe($value){
    return mysql_real_escape_string($value);
}
function br2nl($string)
{
    $breaks = array("<br />","<br>","<br/>");  
    return str_ireplace($breaks, "\r\n", $string); 
}
$original_string = 'some text with<br>tags here.';
$good_string = br2nl($original_string);