【问题标题】:how to convert line breaks stored in mySQL to a single line如何将存储在 mySQL 中的换行符转换为单行
【发布时间】:2014-07-27 20:20:24
【问题描述】:

我在 mySQL 中存储了带有换行符的描述,所以当我按原样输出它们时,我使用:

<?
echo nl2br($description);
?>

它显示:

Line 1

Line 2

Line 3

到目前为止,一切都很好。现在,我想对元标记使用相同的描述,问题是即使我像这样输出它们:

$old_string = nl2br($description);
$new_string = preg_replace("/<br \/>/"," ",$old_string);
echo $new_string;

我仍然得到这些元标记:

<meta property="og:description" content="Line 1

Line 2

Line 3"/>

如何让它在 1 行中全部输出,它们之间只有一个空格?

非常感谢您的帮助:)

【问题讨论】:

    标签: php tags meta


    【解决方案1】:

    不要将nl2br 用于 META,而只需替换数据库中字符串上的换行符。请注意,根据您的环境,换行符可以用\r\n 或简单地用\n 表示。所以尝试使用以下代码:

    $onelinestring = str_replace("\r\n", " ", $description);
    $onelinestring = str_replace("\n", " ", $onelinestring);
    

    【讨论】:

    • 冗余代码,只为str_replace提供数组,而不是调用两次:str_replace(array(PHP_EOL, "\r\n"), " ", $string);
    • @MichaelArenzon 是的,可能有点多余,但它表示替换的顺序非常重要,不应依赖底层框架实现来确保它。
    【解决方案2】:

    试试:

    $singleLine = str_replace("\n", " ", $string);
    

    没有 nl2br,只是从数据库中获取的字符串。

    【讨论】:

    • 非常感谢您的回答。你的速度更快,但下面带有 \r\n 的那个实际上解决了我的问题。无论如何谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2020-09-28
    • 2021-07-14
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多