Case insensitive iskanje
 
werky 1. okt 2014 11:37:20 Pridružen od:
16. apr 2012
787 objav
796 168 26
#1

Zdravo,



Imam eno zanimivo težavo...



na strani imam dinamični iskalnik, ki išče po imenu izdelka/dobavitelja in sproti obarva iskalni izraz v tekstu, recimo iščeš "Pivo", rezultat je pa naprimer "PIVOVARNA.



Načeloma deluje enako če iščem z velikimi ali malimi črkami, v vsakem primeru mi lepo obarva iskalni string, težava pa nastopi pri posebnih znakih, torej č,ž,š...Tukaj pa kot da ločuje velike in male črke...



Pa imam v tabeli nastavljeno utf8generalci in tudi v kodi ni ničesar takega...



Se komu sanja kaj narediti?


všeč(0) ni všeč(0) spam(0)
 
carli 1. okt 2014 12:05:46 Pridružen od:
5. avg 2008
1258 objav
583 54 17
#2

V bistvu je pri jquery pluginu za ajax search regex brez i, kar pomeni da je case sensitive, rešitev je gi ... primer: http://jsfiddle.net/cww6zf5r/. Poizkušaj iskat del, ki je tam v besedilu, prva vrstica je z i, druga pa brez.


všeč(1) ni všeč(0) spam(0)
 
werky 1. okt 2014 12:50:41 Pridružen od:
16. apr 2012
787 objav
796 168 26
#3

Hvala za pomoč...



Sama menjava barve teksta se zgodi v php-ju in sicer takole:


$query = $db->query("SELECT * FROM cscart_product_descriptions WHERE UPPER(firma) LIKE '%$queryString%' AND status='A' LIMIT 15");

if($query) {
// While there are results loop through them - fetching an Object (i like PHP5 btw!).


while ($result = $query ->fetch_object())
{
// Format the results, im using <li> for the list, you can change it.
// The onClick function fills the textbox with the result.
$izdelek = $result->product;
$p_id = $result->product_id;
$firma = $result->firma;
$slika = $result->slika;

$firma = str_replace("/*/","<br>",$firma);
$display = preg_replace("@".$queryString."@i", "<span style='color:#F4A443;'><b>".$queryString."</b></span>", $firma);

echo '<a id="opener_product_picker_'.$p_id.'" class="iskanje_izdelek" rev="product_quick_view_'.$p_id.'" href="/index.php?dispatch=products.quick_view&product_id='.$p_id.'&prev_url=">
<li onClick="fill(\''.$display.'\');">
<table>
<td>
<img style="border: 1px dashed #777777; border-radius: 3px;" src="'.$slika.'">&nbsp;&nbsp;</td><td>'.$display.'</td></table></li></a>';

}

Očitno je potem težava tukaj...ali pa česa ne razumem...



lp


všeč(0) ni všeč(0) spam(0)
 
kelvan 6. okt 2014 05:27:37 Pridružen od:
19. okt 2007
891 objav
658 122 26
#4

mislim, da v tvojem primeru ni potrebe po regex, tako da lahko mirno uporabiš navaden case insensitive replace


$display = str_ireplace($queryString, "<b style='color:#F4A443;'>".$queryString."</b>", $firma);

...ali pa poskušaj z mberegireplace


všeč(0) ni všeč(1) spam(0)
 
werky 9. okt 2014 10:46:56 Pridružen od:
16. apr 2012
787 objav
796 168 26
#5

Da ne odpiram nove teme...



Še vedno imam neke težave z iskanjem, tokrat pa naprimer iščem besedo ki vsebuje Š, pa dobim vrnjene tudi rezultate ki imajo sam S...



Pa nimam pojma kje je težava...


všeč(0) ni všeč(0) spam(0)
 
bostjan 9. okt 2014 13:30:31 Pridružen od:
31. jul 2008
643 objav
689 30 9
#6

collation na polju v mysql-u


všeč(0) ni všeč(0) spam(0)
 
werky 9. okt 2014 18:31:49 Pridružen od:
16. apr 2012
787 objav
796 168 26
#7

@bostjan:



Hvala za namig, sem pa že rešil z regexp...


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se