YiluPHP
这家伙很懒,什么都没有留下...

函数 PHP代码提取文章的摘要,包含所有关键词的上下文,关键词高亮显示

浏览数 35213 最后修改时间
函数名: extract_keyword_context
使用PHP代码提取文章的摘要,包含所有关键词的上下文,关键词高亮显示,关键词使用strong标签包住,并且添加了名为keyword的样式,只要控制这个样式颜色即可。
可以实现百度的这种效果:


函数代码如下所示:
/**
 * 提取所有关键词的上下文并进行高亮显示
 * @param string $text  文章内容,去掉html标签后再传过来
 * @param array $keywords  关键词,支持传多个
 * @param int $length 最多返回的字数
 * @return string
 */
function extractKeywordContext($text, $keywords, $length=200) {
	$contextSize = 10; // 上下文摘要的大小,可以根据需要进行调整
	$keywordContext = [];
	$len = 0;
	foreach ($keywords as $keyword) {
		$pattern = '/(.{0,' . $contextSize . '})(' . preg_quote($keyword, '/') . ')(.{0,' . $contextSize . '})/iu'; // 构建正则表达式模式(不区分大小写,支持中文)
		preg_match_all($pattern, $text, $matches, PREG_SET_ORDER);
		foreach ($matches as $match) {
			$context = $match[1] . '<strong class="keyword">' . $match[2] . '</strong>' . $match[3];
			$len += mb_strlen(strip_tags($context));
			if ($len <= $length) {
				$keywordContext[] = $context;
			}
			else {
				break 2;
			}
		}
	}
	if ($keywordContext) {
		return implode('...', $keywordContext);
	}
	else {
		return mb_substr($text, 0, $length);
	}
}

悄悄告诉你们,这是我叫ChatGPT起稿的,然后由我改良完成,达到最佳效果,亲测可以有效使用。
今天我叫三个AI大模型写代码,使用同样的描述,看看哪个AI更聪明,​它们是:讯飞星火、通义千问、ChatGPT,结果很明显:
讯飞星火写不出好代码,指出错误和给出明确的要求也不行,基本上搞不懂逻辑。
通义千问第一次没写对,但是很接近了,通过多次指正错误和提要求可以变得代码可用。
ChatGPT基本上的一步到位,为什么说是“基本上”呢?因为我看代码没有问题,但在运行时发现几个考虑不周全的地方。

我来说说