0

我的查询结果集中有一个字符串p12200。用户在搜索文本中的任何位置搜索p-122-0p122-0嵌入破折号,但我想p1220在我们的前端突出显示文本。我在数据库中使用 replace 关键字,它返回正确的结果集,但我用颜色突出显示结果集。

我的颜色突出显示功能是:

function strreplace($searchstring, $result) {

 if(stripos($searchstring,'-')===false) return str_ireplace($searchstring, "<span class='highlightcolor'>".$searchstring."</span>", $result);
 else {

 if(stripos($result,'-')===false) return str_ireplace(str_ireplace('-','',$searchstring), "<span class='highlightcolor'>".str_ireplace('-','',$searchstring)."</span>", $result);
 elseif(stripos($result,'-')!==false)  return str_ireplace(str_ireplace('-','',$searchstring), "<span class='highlightcolor'>".$searchstring."</span>", $result);

 }

}

如果我的代码有任何错误,请提出建议。

4

1 回答 1

0
function highlight(str, className) {

      jQuery( "#resultcontainer td" ).each(function() {

  var val = jQuery(this).text();//get the string value
  var match='';

  if(val.toLowerCase().indexOf(str.toLowerCase())!==-1)
    {   
      match = val.substr(val.toLowerCase().indexOf(str.toLowerCase()),str.length);

    }
    else if(val.replace(/\-/g,'').toLowerCase().indexOf(str.replace(/\-/g,'').toLowerCase())!==-1)
    { 
        match = getMatch (val,str.replace(/\-/g,''),'');
    }
    if(match!=''){
    var regex = new RegExp("("+match+")", "gi");
    var n = val.replace(regex,"<span class='"+className+"'>"+match+"</span>");     //replace the match with highlight color
    jQuery(this).html(n);
    }

 });

}

function getMatch(string,searchString,match)
 {

var i = searchString.length;
var m = string.length;
var j = 0;
    var stringarray = string.split("");
var searcharray = searchString.split("");

 for(var k=0;k<i;k++){

    if(j>=m) break;

     for(;j<m;j++){

        if(k>=i) return match;

     if(searcharray[k] == stringarray[j]) {
        if(match=='-' || match=='') {var l = j;} // sotre the first match index value
        match = match+stringarray[j];
        k++;

      }
      else if(stringarray[j]=='-'){
      match = match+stringarray[j];
      }
      else {
       if(match!='' && match!=='-') 
           j = l;
       match = '';
       k = 0;
      }

     }

 }

  return match;

}

  jQuery(document).ready(function() {
        highlight("p-1-22-0", "highlightcolor");
   });
于 2013-04-18T12:15:40.913 回答