生成元描述时的神秘断线

时间:2012-05-08 20:25:19

标签: php

我有这个功能,将字符串剪切成多个字符而不会删除任何单词。我将它用于页面的meta_description

function meta_description_function($text, $length){ // Meta Description Function
        if(strlen($text) > $length) {
            $text = substr($text, 0, strpos($text, ' ', $length));
        }
        return $text;
    }

我从wordpress帖子中提取内容:

$content = $content_post->post_content;

我从内容中删除了标签:

$content = strip_tags($content);

我对内容的功能是:

$meta_description = meta_description_function($content, 140);

问题是$ content的内容是这样的:

<p>Hello I am sentence one inside my own paragraph.</p>

<p>Hello I am sentence two inside my own paragraph.</p>

应用内容后,我回显$ meta_description,我得到不同行的句子,如下所示:

<meta name="description" content="Hello I am sentence one inside my own paragraph.
**<i get a space here!>**
Hello I am sentence two inside my own paragraph." />

如果我使用了条形标签,为什么会出现这个空白区域,我该怎么办才能让它消失?

4 个答案:

答案 0 :(得分:3)

修剪空格,并删除换行符。然后去掉标签。 全部在一行!

$content = trim( preg_replace( '/\s+/', ' ', strip_tags($content) ) ); 注意: \ s会处理更多情况,而不仅仅是换行符和空格..还有标签和换页等。

DEMO

答案 1 :(得分:2)

您获得了换行符,因为您的HTML中也有换行符。 striptags将删除所有代码,但不会删除换行符。

要删除它们,您可以使用trim()preg_replace / str_replace。只需删除字符串中的\n即可。

答案 2 :(得分:2)

我相信你的代码实际上是从源代码中显示换行符:

<p>Hello I am sentence one inside my own paragraph.</p>

<p>Hello I am sentence two inside my own paragraph.</p>

两者之间的空白行实际上放在那里,有两个换行符,回车符或两者。你可以做这样的事情来摆脱它:

$text = str_replace("\n", "", $text);
$text = str_replace("\r", "", $text);

希望有所帮助!注意 - 您可能希望用空格而不是空字符串替换。

答案 3 :(得分:1)

$content = str_replace( "\n", "", strip_tags($content) );