Home  >  Article  >  Backend Development  >  wordpress中的<!--more-->截取输出摘要是怎么判断的?

wordpress中的<!--more-->截取输出摘要是怎么判断的?

WBOY
WBOYOriginal
2016-06-06 20:50:501250browse

当文章是html形式保存的

那么输出的时候,在遇到<!--more-->时终止输出,只输出摘要。

当文章是Markdown形式保存的

使用Python Markdown保存了用户原始输入数据,那么这个<!--more-->应该怎么融入进去,同时输出时遇到这个标记时终止,只输出摘要。

希望有人能跟我讲解下这个原理是怎么实现的?需要用到哪些函数方法?

回复内容:

当文章是html形式保存的

那么输出的时候,在遇到<!--more-->时终止输出,只输出摘要。

当文章是Markdown形式保存的

使用Python Markdown保存了用户原始输入数据,那么这个<!--more-->应该怎么融入进去,同时输出时遇到这个标记时终止,只输出摘要。

希望有人能跟我讲解下这个原理是怎么实现的?需要用到哪些函数方法?

来,给你看下wordpress恶心的代码

function get_extended($post) {
	//Match the new style more links
	if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
		list($main, $extended) = explode($matches[0], $post, 2);
		$more_text = $matches[1];
	} else {
		$main = $post;
		$extended = '';
		$more_text = '';
	}

	// Strip leading and trailing whitespace
	$main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
	$extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
	$more_text = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $more_text);

	return array( 'main' => $main, 'extended' => $extended, 'more_text' => $more_text );
}

wordpress的code @kankana已贴,那么补充一些实现方式

javascript版本

'正文内容<!--more-->截断更多内容'.split('<!--more-->')[0];

返回 '正文内容'

php

$errrr=explode('<!--more-->','正文内容<!--more-->截断更多内容');
echo $errrr[0]

输出 '正文内容'

lz是想用jekyll么,可以试试postmore.rb这个plugin,创建一个Liquid过滤器过滤掉不需要现实的内容,详情请猛戳 https://github.com/tokkonopapa/jekyll... 。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn