REGEXP kod pretrage MySQL baze i šžćč?

poruka: 4
|
čitano: 2.660
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
REGEXP kod pretrage MySQL baze i šžćč?

REGEXP '[[:<:]]".$pret."[[:>:]]'

REGEXP u mysql upitu, kada kucam reč "smeštaj" ne pronalazi one upise koji umesto š imaju s, tj. "smestaj", a i obrnuto dok LIKE pronalzi i jedno i drugo.
REGEXP mi se cini da daje preciznije rezultate od LIKE, pa zato sam hteo sa njim da pokusam, ali ova slovca me zezaju.

Da li postoji neko resenje za slovca šćčž kod REGEXP?

Kako vi pretrazujete bazu, dajte neki primer?

 
0 0 hvala 0
17 godina
offline
Re: REGEXP kod pretrage MySQL baze i šžćč?
acke_volce kaže...

REGEXP '[[:<:]]".$pret."[[:>:]]'

REGEXP u mysql upitu, kada kucam reč "smeštaj" ne pronalazi one upise koji umesto š imaju s, tj. "smestaj", a i obrnuto dok LIKE pronalzi i jedno i drugo.
REGEXP mi se cini da daje preciznije rezultate od LIKE, pa zato sam hteo sa njim da pokusam, ali ova slovca me zezaju.

Da li postoji neko resenje za slovca šćčž kod REGEXP?

Kako vi pretrazujete bazu, dajte neki primer?

Ovako kako si ti to napisao, sumnjam da će raditi.

 

Regular expression radi "egzaktnu" usporedbu onoga što si poslao unutra. Znači ako vrijednost tvoje ulazne varijable "smjestaj" onda regex točno pokušava matchati tvoju riječ. Znači samo "smjestaj" ulazi unutra. Pretpostavljam da si to radio za neki pretraživač (korisnik nešto upiše i onda ti to pronađeš). Po meni regex ti baš i nije za to. On mora biti fiksni i pretraživati neki dinamički skup podatka, a ne da imaš fiksni skup podataka koji pretražuje dinamički regex (ovisno o korisniku), onda korisnik može tu unutra bilo što baciti.

 

Inače regex koji ti može matchati smještaj i smjestaj je ovakav "smje[š|s]taj" ili "smje.taj", ali ako korisnik to mora napisati, onda je to loše.

 

Ako već želiš ostati na regex-u onda napravi uniju dva selecta, jedan sa izvornim regex-om, a drugi sa regex-om u kojem sve HR znakove zamijeniš sa običnim-a (bar ih nema puno).

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
16 godina
neaktivan
offline
Re: REGEXP kod pretrage MySQL baze i šžćč?

dado2202, hvala ti.

 

Ja sam skroz zaboravio da sam postavio pitanje na ovom forumu :)

Inace, nasao sam resenje, tj drugi su nasli :). Propustam reci koje se pretrazuju kroz ovo:

 

$pret = str_replace(array('š', 'ć', 'č', 'ž', 's', 'c', 'z','Š', 'Ć', 'Č', 'Ž', 'S', 'C', 'Z'), array('(š|s)', '(ć|c)', '(č|c)', '(ž|z)', '(š|s)', '(c|ć|č)', '(ž|z)','(Š|S)', '(Ć|C)', '(Č|C)', '(Ž|Z)', '(Š|S)', '(C|Ć|Č)', '(Ž|Z)'), $pret); 

 

17 godina
offline
Re: REGEXP kod pretrage MySQL baze i šžćč?
acke_volce kaže...

dado2202, hvala ti.

 

Ja sam skroz zaboravio da sam postavio pitanje na ovom forumu :)

Inace, nasao sam resenje, tj drugi su nasli :). Propustam reci koje se pretrazuju kroz ovo:

 

$pret = str_replace(array('š', 'ć', 'č', 'ž', 's', 'c', 'z','Š', 'Ć', 'Č', 'Ž', 'S', 'C', 'Z'), array('(š|s)', '(ć|c)', '(č|c)', '(ž|z)', '(š|s)', '(c|ć|č)', '(ž|z)','(Š|S)', '(Ć|C)', '(Č|C)', '(Ž|Z)', '(Š|S)', '(C|Ć|Č)', '(Ž|Z)'), $pret); 

 

Čisto ok rješenje. Samo bi bilo bolje da si umjesto zagrada "()" stavljao "[]" zagrade, jer zaobljene zagrade su kod regular expression-a matching grupe, dok su uglate zagrade za matchiranje single char-a ili riječi. Sada ti radi regular dodatni posao jer i matcha matching grupe(tj. jednu grupu) nad tim slovom (koje ti i ovako i onako ne čitaš, ali one se ipak kreiraju)

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice