作者PTTLSboy (阿铯)
看板PHP
标题[请益] 关键字上红色的作法有错误,请问该怎麽改
时间Mon Dec 17 21:22:48 2012
我在做查询功能,以空格分隔多个关键字,显示出来将关键字上红色
假设输入:
衣服 裤子 鞋子 (没有问题)
但是输入:
衣服 e r
会出现问题,它会将第一次替换完毕的<span style='color:red'>衣服</span>,中的e、r,
再次替换造成错误
像这样<span styl<span style='color:red'>e</span>='color:r<span
style='color:red'>e</span>d'>衣服</span>
程式码如下:
//$search_array为输入的关键字阵列
$patterns = array();
foreach ((array)$search_array as $value){
array_push($patterns,"/".$value."/");
}
$replacements = array();
foreach ((array)$search_array as $value){
array_push($replacements,"<span style='color:red;'>".$value."</span>");
}
$p_name=preg_replace($patterns, $replacements, $p_name);
//$p_name为要查询的字串
请问该怎麽改呢?? 谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.58.172.120
1F:→ tyf99:改 pattern,<tag> 内部 attr 不处理 12/17 23:24
这个的正规表示有点难写
我写出最接近的是这样,但好像还是差挺远的:(
array_push($patterns,"/(?!.*[(<span)])(".$value.")/");
且$p_name遇到s、p、a、n会解析不正确
※ 编辑: PTTLSboy 来自: 61.58.172.120 (12/18 22:56)
※ 编辑: PTTLSboy 来自: 61.58.172.120 (12/18 22:57)