【问题标题】:php html remove line break from meta description tagphp html从元描述标签中删除换行符
【发布时间】:2011-07-18 17:15:52
【问题描述】:

我正在用 PHP 打印来自 MYSQL 数据库的页面内容。我在数据库中有一个名为 $row['description']

的文本字段

在将用户输入存储到数据库时,我只使用 mysql_real_escape_string(),所以我不编辑 html

问题是我使用 db 中的这个字段作为 html 页面元描述标记。因此,如果用户在描述中插入换行符,它们会导致元描述标记内页面源代码中的换行符。我试图通过使用循环跳过 br 格式来删除换行符。我使用 nl2br 转换为 br。

$desc_array=(explode(" ", $row['description']));
for($i=0; $i < 17;$i++){
    if(nl2br($desc_array[$i])=="<br />" || nl2br($desc_array[$i])=="<br/>"){
        $i++;
    } 

我检查了我的 SQL 文件,换行符显示为

\r\n\r\n

我也尝试过检查这种格式

 $desc_array[$i])=="\r\n\r\n"
 $desc_array[$i])=="\r\n"
 $desc_array[$i])=="\n"
 $desc_array[$i])=="\r"

但仍会在描述标签中打印换行符。有什么想法吗?

【问题讨论】:

  • 在你做完爆炸后尝试做var_dump($desc_array)。它将准确显示每个元素变成了什么,以及它有多长(字符串长度)。这将使您了解其中隐藏的字符。
  • 试过 var_dump() ,它似乎没有显示任何换行符。输出是从应该有换行符的地方 ([14]=> string(17) "balcony. There" [15]=> string(2) "is") 注意,'balcony.' 之间应该有换行符。和 'T​​here' 但是这显示了它只是同一字符串的一部分?
  • 查看页面源代码 - 浏览器中的 HTML 视图不支持文本换行符,并将它们视为不可见或空格字符。
  • 好吧,我想如果描述标签中的换行符谷歌不将其包含在搜索结果中并且它不会影响排名,这并不重要吗?
  • 您最好用其他东西替换它们,如下面的 webarto 回答中所示。

标签: php line-breaks html


【解决方案1】:
$string = str_replace(array("\r", "\n"), array('', ''), $string);

【讨论】:

    【解决方案2】:

    当我一遍又一遍地遇到这种情况时,我会告诉你我的看法。

    删除\r\n\n 有时会有所帮助,有时则不会。 在少数情况下,我发现我必须像这样删除:

    <?php
    $desc = "This
    is a description";
    // this is just a line break [enter]
    $newDesc = str_replace(" 
    ", " ", $desc); // witch outputs This is a description
    ?>
    

    我从来没有好奇心去找出它为什么不想要\r\n或\n,也许我现在就会知道了:)

    【讨论】:

    • 如果您替换 \r\n\n ,您仍有可能拥有 \r :)
    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    相关资源
    最近更新 更多