PHP代码提取文章的摘要,包含所有关键词的上下文,关键词高亮显示
函数名:
extract_keyword_context
可以实现百度的这种效果:

函数代码如下所示:
/**
* 提取所有关键词的上下文并进行高亮显示
* @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基本上的一步到位,为什么说是“基本上”呢?因为我看代码没有问题,但在运行时发现几个考虑不周全的地方。