1、实现搜索引擎中把搜索结果命中的关键字标记红色
<?php
/**
* 把字符串拆分成数组
* @param $search 搜索关键字
* @return array
*/
function splitString(string $search):array
{
// 正则匹配,汉字按单字拆分,英文按单词拆分并且位数不少于2位,数字按连续性拆分并且位数不少于2位
preg_match_all('/([a-zA-Z]){2,}/', $search, $matchesWord);
preg_match_all('/([\d]){2,}/', $search, $matchesNumber);
preg_match_all("/[\x{4e00}-\x{9fa5}]/u", $search, $matchesCN);
$originalArr = $newArr = [];
if (!empty($matchesWord[0])) {
$originalArr = array_merge($originalArr, $matchesWord[0]);
}
if (!empty($matchesNumber[0])) {
$originalArr = array_merge($originalArr, $matchesNumber[0]);
}
if (!empty($matchesCN[0])) {
$originalArr = array_merge($originalArr, $matchesCN[0]);
}
// 添加<font></font>标签
foreach ($originalArr as $value) {
$newArr[] = sprintf("<font color='red'>%s</font>", $value);
}
return [$originalArr, $newArr];
}
$keyWord = '客户合同账户登录不了 怎么处理';
$searchRequest = [
"这个客户售后搜索不到",
"这个客户是做个人至尊服务被录成个人VIP?",
"有什么办法更有效知道合同过期的学员?",
"管理后台怎么查询合作到期的客户?",
"麻烦查一下CRM这个客户登录账号",
"这个客户 之前在商城老系统办过合同",
"麻烦移动一下到我商城的老系统,我的账号是xx",
"客户合同账户登录不了 怎么处理",
];
$resList = splitString($keyWord);
// 正则子字符串替换,
$replaceData = str_replace($resList[0], $resList[1], $searchRequest);
echo "<pre>关键字:\n";
echo $keyWord . "\n\n";
echo "搜索结果:\n";
print_r($replaceData);
2、字符串截取
3、去除字符串中的指定字符
/**
* 去除字符串中的指定字符
* @param string $str 待处理字符串
* @param string $chars 需去掉的特殊字符
* @return string
*/
function cmf_strip_chars($str, $chars = '?<*.>\'\"')
{
return preg_replace('/[' . $chars . ']/is', '', $str);
}

© 版权声明
文章未经允许请勿转载。
THE END
暂无评论内容