我正在创建一个搜索引擎。目前,我的脚本会粗体显示关键字中的匹配单词。但有些关键字太长了,比如 shah rukh khan 的结果:
25216d1235653089 shahrukh khan s 壁纸 shah rukh 演员
如您所见,上述关键字太长。所以,我需要它像:
shahrukh khan 的壁纸
或
shah rukh 演员
目前,我使用以下代码,但在粗体标记之前和之后需要一个空格。因此,如果第一个单词是粗体,则显示整个关键字。
if(strlen($img_keyword)>30){
$img_keyword = preg_replace('/(.*?) <b>(.*?)<\/b> (.*?)/us',
" <b>$2</b> ",
$img_keyword);
}
有没有办法解决这个问题?
答案 0 :(得分:0)
好吧,据我所知,你不需要前面和后面的空格,所以你为什么不删除空格,在开头添加一个起始锚点,在结束时添加一个结束锚点模式的结束?像这样:
$img_keyword = preg_replace('/^(.*?)<b>(.*?)<\/b>(.*?)$/us'," <b>$2</b> ",$img_keyword);
答案 1 :(得分:0)
在 Franz 的帮助之后,我编辑了我的代码,如下所述。
$img_keyword = boldText($query, $img_keyword);
if(strlen($img_keyword)>30){
$img_keyword = preg_replace('/^(.*?)<b>(.*?)<\/b>(.*?)/u',"<b> $2 </b>",$img_keyword);
}
if(strlen($img_keyword)>30){
$img_keyword = preg_replace('/<\/b>(.*?)<b>/x'," ",$img_keyword);
}
if(strlen($img_keyword)>30){
$img_keyword = preg_replace('/<\/b>(.*?)$|(.*?)<b>$/x',"</b> ",$img_keyword);
}
如果关键字是
kajol shah rukh vogue india blumarine
结果是
shah rukh
如果关键字是
p 18 mFEk4J448M labelsadt 0%2Clanguage en%2Cposttag feroz khan%2Cposttag khan于4月27日死亡%2Cposttag不再是%2Cposttag宝莱坞的风格图标
结果是
khan khan
有没有办法保留一两个单词并删除其他单词?