Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyszukiwarka zamiana znaków.
cykcykacz
post
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Witam, (IMG:style_emoticons/default/oneeyedsmiley02.png)
mam taki problem w bazie danych mam zapisane nazwy miast np: Ostrów. Chcę zrobić wyszukiwarkę, która po wprowadzeniu "ostrow" znajdzie mi "Ostrów". Jednak mam kłopot ze zamianą znaków. Tutaj mam fajną funkcję tylko ona zmienia to odwrotnie:
Kod
function clear_spec_char($text){
   $tabela = Array(
   //WIN
    "\xb9" => "a", "\xa5" => "A", "\xe6" => "c", "\xc6" => "C",
    "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
    "\xf3" => "o", "\xd3" => "O", "\x9c" => "s", "\x8c" => "S",
    "\x9f" => "z", "\xaf" => "Z", "\xbf" => "z", "\xac" => "Z",
    "\xf1" => "n", "\xd1" => "N",
   //UTF
    "\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C",
    "\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L",
    "\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S",
    "\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z",
    "\xc5\x84" => "n", "\xc5\x83" => "N",
   //ISO
    "\xb1" => "a", "\xa1" => "A", "\xe6" => "c", "\xc6" => "C",
    "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
    "\xf3" => "o", "\xd3" => "O", "\xb6" => "s", "\xa6" => "S",
    "\xbc" => "z", "\xac" => "Z", "\xbf" => "z", "\xaf" => "Z",
    "\xf1" => "n", "\xd1" => "N",
    //I to co nie potrzebne
   "$" => "-", "!" => "-", "@" => "-", "#" => "-", "%" => "-");

   return strtr($text,$tabela);
}

Wiadomo zmieniła by Ostrów === na Ostrow. Tylko, że ja muszę zrobić to odwrotnie. Więc chciałem to zrobić w ten sposób:
Kod
function _no_pl($tekst)
{
   $tabela = Array(

"\x6f"   => "ó", "\x4f" => "Ó");

   return strtr($tekst,$tabela);
}

Tylko teraz po wprowadzeniu Ostrow zmienia na Óstrów.
Jak zrobić aby sprawdziło wszystkie kombinacje czyli:
Óstrow = Ostrów ? jeżeli nie
Óstrów = Ostrów ? jeżeli nie
Ostrów = Ostrów prawda skrycik wykonuje się dalej? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Generalnie jeśli już bierzemy się za wyszukiwanie czegokolwiek w bazie
warto utworzyć do tego celu osobną tabele, gdzie będziemy trzymać relację słów kluczowych do artykułów/tematów/postów czy czego tam szukamy...
Wpisaną frazę dzielimy na słowa, dla każdego słowa wykonujemy zapytanie wsparte przez indeksy..
Wyszukiwanie będzie trwało tyle co na google, bez znaczenia jak wiele contentu przeszukujemy..

Inaczej musimy robić full-text-search który trwa półtora miliona lat świetlnych i przeciąża bazę.
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: 4.10.2025 - 16:04