我有这个功能,将字符串剪切成多个字符而不会删除任何单词。我将它用于页面的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." />
如果我使用了条形标签,为什么会出现这个空白区域,我该怎么办才能让它消失?
答案 0 :(得分:3)
修剪空格,并删除换行符。然后去掉标签。 全部在一行!
$content = trim( preg_replace( '/\s+/', ' ', strip_tags($content) ) );
注意: \ s会处理更多情况,而不仅仅是换行符和空格..还有标签和换页等。
答案 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) );