Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> strtolower nie działa..., jak porównać polskie litery (Ł vs. ł)?
codo
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 31.10.2004

Ostrzeżenie: (0%)
-----


Mam juz tego dosyc... zaczelo sie od napisania wyszukiwarki. Po wpisaniu słowa "łódź" miała mi znaleźć takze te dane z bazy ktore zawierały "Łódź" a także "ŁÓDŹ". Wyszukiwanie bralo pod uwage jeszcze wiele innych kryteriow wiec nie dalo rady wszystkiego zamknac w jednym sqlu.
Wiec biore SELECT * FROM OBIEKTY.. i dalej jesli cos pasuje to wrzucam do tablicy wynikow.
Porownanie musi byc case insensitive czyli
to nie podziala:
  1. <?php
  2. echo &#092;"Ł \".strtolower(\"Ł\");// wypisze: Ł Ł
  3. ?>

nie dziala tez
  1. <?php
  2. stripos
  3. ?>

  1. <?php
  2.  
  3. if(strcasecmp(&#092;"ŁÓdŹ\",\"ź\")>=0) echo \"MATCH\"; else echo \"NIE MA\";
  4. // wypisze NIE MA
  5.  
  6. ?>


Ale
  1. <?php
  2.  
  3. if(strcasecmp(&#092;"Abc\",\"a\")>=0) echo \"MATCH\"; else echo \"NIE MA\";
  4. // wypisze MATCH
  5.  
  6. ?>


Co tu zrobić??(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vhris
post
Post #2





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


Sam post jest już nieco przeterminowany ale dla osób szukając rozwiązania moge zaproponowac coś takiego:

Zakładając, że zmienna $temp to jest jakaś nazwa:

CODE
$temp = str_replace(array('Ą','Ż','Ź','Ć','Ś','Ę','Ń','Ł','Ó'),array('ą','ż','ź','ć','ś','ę','ń','ł','ó'),strtolower($temp));


Później juz standardowo do zapytania sql składamy:
CODE
$where = 'where lower(name) LIKE \''.$temp.'\'';


Ten sposób przynajmniej u mnie daje pozytywne wyniki.

Ten post edytował vhris 2.02.2009, 15:15:11
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 09:39