在PHP代码中实现截取文章内容不换行的主要目的是避免在截取的文本中出现换行符或其他特殊字符(如br、p等)。要做到这一点,首先确保在去除HTML标签时能够彻底清理掉所有格式化标签和换行符。可以使用strip_tags()去除HTML标签,但仍需清除可能由标签产生的换行符。
在代码中,修改部分在于确保$post_content在调用 strip_tags() 后去除所有换行符或空格,避免截取后出现不希望的换行。

以下是修改后的代码:
<?php
if ( is_single() ){
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
// 去除所有HTML标签并清除换行符(\n、\r、\t等)
$post_content = strip_tags($post->post_content); // 去除HTML标签
$post_content = preg_replace('/[\r\n\t]+/', ' ', $post_content); // 替换换行符和制表符为空格
$description = mb_substr($post_content, 0, 220); // 获取内容的前220个字符作为摘要(使用 mb_substr 替代 utf8Substr)
}
$keywords = "";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ",";
}
}
?>
解释:
1.去除HTML标签: strip_tags() 已经去除了所有HTML标签。
2.清除换行符、制表符: 使用了 preg_replace('/[\r\n\t]+/', ' ', $post_content); 这一正则表达式来替换所有的换行符(\n)、回车符(\r)以及制表符(\t)为空格。这保证了文本中不会再有任何换行符,所有文本都在同一行显示。
3.截取字符: 使用 mb_substr() 函数来截取前220个字符,确保在截取后不会换行。
结果:
这样,文章摘要内容就会在一行内显示,不会包含任何换行符,并且会截取到指定的字符长度。如果原内容包含换行符,它们会被替换为空格,保持文本的连贯性。



发表评论