2013-03-29 3 views
0

내 검색어 결과 집합에 p12200과 같은 문자열이 있습니다. 사용자는 p-122-0 또는 p122-0을 포함하는 대시를 검색 텍스트에서 검색하지만 Google 프런트 엔드에서 p1220 텍스트를 강조 표시하려고합니다. 데이터베이스에서 replace 키워드를 사용하고 올바른 결과 집합을 반환하지만 결과 집합을 강조 표시하는 색입니다. 컬러 하이라이트로PHP에서 주어진 문자열의 텍스트 색상을 강조 표시

내 기능은 다음과 같습니다 난 내 코드에 어떤 실수를 한 경우

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); 

} 

} 

제안하십시오.

+0

왜 JQuery와 더이 나를 위해 작동하지 않는 – Vineet1982

+0

을 강조하지 않습니다. 결과 세트가 "P1220-0004-BA : P1220 512uDOCXpe256MBRFID"이고 P1220-0이 검색되었습니다. 그것은 in 결과 세트를 대체하지만 결과를 대시로 강조 표시하려고합니다. – user2223377

+0

@ user2223377 아래의 수정 사항을 참조하십시오. –

답변

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"); 
    }); 
관련 문제