Php 在字符串中加粗一些单词并删除一些未绑定的单词
我正在创建一个搜索引擎。目前,我的脚本将关键字中的匹配词加粗。但是有些关键词太长,比如沙鲁克汗的搜索结果: 25216d1235653089shahrukh khans 壁纸沙阿·鲁克演员 如您所见,上面的关键字太长。所以,我需要它像: 沙鲁克汗壁纸 或 shah rukh演员Php 在字符串中加粗一些单词并删除一些未绑定的单词,php,regex,string,Php,Regex,String,我正在创建一个搜索引擎。目前,我的脚本将关键字中的匹配词加粗。但是有些关键词太长,比如沙鲁克汗的搜索结果: 25216d1235653089shahrukh khans 壁纸沙阿·鲁克演员 如您所见,上面的关键字太长。所以,我需要它像: 沙鲁克汗壁纸 或 shah rukh演员 目前,我正在使用以下代码,但在粗体标记前后需要一个空格。因此,如果第一个单词是粗体的,它将显示整个关键字 if(strlen($img_keyword)>30){ $img_keyword = preg_
目前,我正在使用以下代码,但在粗体标记前后需要一个空格。因此,如果第一个单词是粗体的,它将显示整个关键字
if(strlen($img_keyword)>30){
$img_keyword = preg_replace('/(.*?) <b>(.*?)<\/b> (.*?)/us',
" <b>$2</b> ",
$img_keyword);
}
if(strlen($img_关键字)>30){
$img_keyword=preg_replace('/(.*)(.*)(.*)(.*)(.*)/us',
" $2 ",
$img_关键字);
}
有没有办法解决这个问题?嗯,据我所知,粗体文本前后不需要空格,所以为什么不删除空格,在图案的开头添加一个起始锚点,在图案的结尾添加一个结束锚点?像这样:
$img_keyword = preg_replace('/^(.*?)<b>(.*?)<\/b>(.*?)$/us'," <b>$2</b> ",$img_keyword);
$img_关键字=preg_replace('/^(.*?(.*?)(.*?)$/us',“$2”,$img_关键字);
在弗兰兹的帮助下,我编辑了下面提到的代码
$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);
}
$img\u关键字=粗体文本($query,$img\u关键字);
如果(strlen($img_关键字)>30){
$img_keyword=preg_replace('/^(.*?(.*?)(.*?)(.*?)/u'、“$2”、$img_keyword);
}
如果(strlen($img_关键字)>30){
$img_关键字=preg_replace('/(.*?)/x','',$img_关键字);
}
如果(strlen($img_关键字)>30){
$img_keyword=preg_replace('/(.**?$|)(.**?$/x','',$img_keyword);
}
如果关键字是 kajol shah rukh vogue印度蓝宝石 结果是 沙鲁克
如果关键字是 p 18 mFEk4J448M labelsadt 0%2语言en%2 Posttag feroz khan%2 Posttag khan于4月27日去世%2 Posttag不再是宝莱坞的风格图标%2 Posttag 结果是 可汗
有没有办法保留一两个未绑定的单词并删除其他单词?我不明白你想做什么。你能再说一遍吗?我只需要删除字符串中的粗体字。这个字符串>“这是关键字一”到这个>“是关键字”这是错误的搜索方式。如果有人找rukh shah怎么办?你现在这样做有什么不对?这似乎是一个抓取粗体内容的正则表达式,有什么不对?@SanHolo:如果有人搜索rukh shah,它会显示shah rukh,因为我正在使用MySQL全文搜索。谢谢你的回答。现在,当我搜索时,它只显示第一个匹配词作为关键字。例如:当我搜索“Shah Rukh Khan”时,图像的关键字是shahI,我也尝试了这个“/^(.*?(.*?)(.*?)/us”,一些图像关键字是可以的。但是,一些很长的关键词,比如khan%2Cposttag khan于4月27日去世%2Cposttag不再是了%2Cposttag宝莱坞的风格图标是一样的……对不起。移除u修改器。这样:$img_关键字=preg_替换('/^(.*?(.*?)(.*?)$/s',“$2”,$img_关键字);