Case insensitive iskanje

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?

6 odgovorov

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.

1

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

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

1

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...

collation na polju v mysql-u

@bostjan:

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