1

我有这个功能,它可以将一个字符串切割成多个字符,而不会切掉任何单词。我将它用于页面的 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

4 回答 4

3

修剪空白,并删除换行符。然后剥离标签。都在一条线上!

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

演示

于 2012-05-08T20:29:24.717 回答
2

您得到换行符是因为您的 HTML 中也有换行符。striptags将删除所有标签,但不会删除换行符。

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

于 2012-05-08T20:31:34.680 回答
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);

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

于 2012-05-08T20:31:38.093 回答
1

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

于 2012-05-08T20:30:07.103 回答