2013-03-29 73 views
0

我的查詢結果集中有一個字符串,如p12200。用戶搜索p-122-0p122-0嵌入破折號在搜索文本中的任何位置,但我想突出顯示前端的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。它會取代結果集中的內容,但我想用短劃線突出顯示結果。 – 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"); 
    }); 
相關問題