[SOLVED] PHP.Porównywanie ciągów z polskimi znakami

0

Witam,
piszę skrypt słownika.Działa to mniej więcej tak, że w pliku tekstowym są słowa wraz z ich tłumaczeniami rozdzielone separatorami.Na stronie jest wyszukiwarka, plik txt jest przeszukiwany po słowie które wpisze się do wyszukiwarki.I tu problem, jak się wpisze wyraz bez polskich liter, to działa.Natomiast jak się wpisze cokolwiek zawierające polską literę to zwraca 0 wyników [???] .Rekordy w pliku txt są zapisane w formacie kodowania ANSI C.Nie jest zastosowane kodowanie 8859-2, tak więc np. słowo
sprzątaczka jest zapisane jako sprzątaczka a nie sprz±taczka.

kod do porównywania jest napisany w ten sposób:

$word = $_POST['word'];
for($i=0;$i<RocordCount;$i++)// skanowanie po wszystkich rekordach
{
if(eregi("$word", $line[$i]))
{ // jeżeli znaleziono pasujący element 
$result++;
//dalszy kod
}
}

Zastanawiam się, czy zmienna word z wyszukiwarki nie musi być przypadkiem kodowana, ale się na tym nie znam.Wcześniej, w innych skryptach, do kodowania URL wykorzystywałem funkcje UrlEncode oraz RawUrlEncode.Wyszukiwarka wysyła zmienną metodą POST.

Przykład
Rekord wystąpi np. w tym przypadku:
szukane słowo sprzątaczka we frazie odkurzacz, sprzątaczka.

Pozdrawiam

0

Ustaw kodowanie strony na takie jak pliku albo użyj iconv (ewentualnie str_replace, bo tu będzie dość wąski zakres znaków).

0

Dziękuję koledze nav za naprowadzenie do celu :d
Poniżej zamieszczam rozwiązanie problemu, może się komuś przyda.

Krok 1 - zapisałem plik txt w kodowaniu UTF-8
Krok 2 - jako, że strona z formularzem miała kodowanie iso-8859-2, to zmienna

$word = $_POST['word']; 

była poprawnie kodowana.
Zmieniłem tylko kodowanie zczytanej linii z pliku txt na iso-8859-2

for($i=0;$i<$records;$i++)
{
	$dict[$i] = iconv("UTF-8", "ISO-8859-2", $dict[$i]);
// porównywanie

i jest git.

Pozdrawiam

0

Zamiast męczyć co chwilę serwer lepiej zapisz plik z kodowaniem ISO albo stronkę serwuj w UTF8. Konwertowanie znaków zawsze trochę czasu zżera, zupełnie niepotrzebnie.

0

No fakt, dobra rada.
Jeszcze raz dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1