我有一个带有<br>
标签的文本,我想将它作为新行保存到MySQL数据库中。不是HTML标签。
例如:
$string = 'some text with<br>tags here.'
我希望将它保存到MySQL中:
some text with
tags here
为此目的,str_replace
有什么权利?谢谢。
答案 0 :(得分:4)
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);
有三件事值得一提:
PHP_EOL
而不是\ r \ n。无论您使用何种系统,这都将提供正确的新行字符。<br />
和其他变体。如果您需要考虑这些变化,那么您应该使用preg_replace()
功能。话虽如此,人们可以推翻所有可能的变化,但仍然没有考虑到所有变化。例如,考虑<br id="mybreak">
以及许多其他属性和空格的组合。答案 1 :(得分:1)
在这里尝试一下。这会将所有<br>
替换为\r\n
。
$string = 'some text with<br>tags here.';
str_replace("<br>","\r\n",$string);
echo $string;
<强>输出:强>
some text with
tags here.
答案 2 :(得分:1)
您可以按照建议使用str_replace
。
$string = 'some text with<br>tags here.';
$string = str_replace('<br>', "\r\n", $string);
虽然,如果您的<br>
代码也可能被关闭,<br />
或<br/>
,则可能值得考虑使用preg_replace
。
$string = 'some text with<br>tags here.';
$string = preg_replace('/<br(\s+\/)?>/', "\r\n", $string);
答案 3 :(得分:1)
您可以使用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<br>tags here
echo $b; // some text with<br>tags here
答案 4 :(得分:1)
尝试:
mysql_real_escape_string
function safe($value){
return mysql_real_escape_string($value);
}