Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z uft-8
art7
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.10.2008

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


Mam bazę w utf-8, dane w utf-8 (testowo wrzucone z Wikipedii), plik który pobiera te dane też w utf-8 i chce te dane po pobraniu zapisać do nowego pliku i używam:
Kod
   $plik = fopen('index.html', 'w');
   fwrite($plik, utf8_encode($index));
   fclose($plik);

I niestety w pliku wynikowym są krzaki zamiast polskich liter. Co jest nie tak?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
ayeo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


A ten nowy plik to też w UTF8?


--------------------
Go to the top of the page
+Quote Post
art7
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.10.2008

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


tak, też
sprawdzałem w Notepad++ i pokazuje że to utf-8
ale jak do tego pliku wrzucę w notepadzie++ tekst z wikipedii i zapiszę to jest OK, a ten z bazy ma krzaki sad.gif

może problem jest po stronie utf8_encode bo u mnie zamienia tak jakby z utf-8 wyciągniętego z bazy na utf-8 do pliku; ale bez tej funkcji były jeszcze brzydsze krzaki, a na php.net ktoś napisał, że niby pomaga ta funkcja w takich wypadkach

--------

OK, poradziłem sobie z powyższym problemem, ale teraz mam nowy:

potrzebuje tekst bez polskich liter (do linka) i poniższa zamiana dla utf-8 nie działa poprawnie:

Kod
$tekst_bez_pl = strtr($tekst, 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');


Ten post edytował art7 26.10.2008, 14:14:14
Go to the top of the page
+Quote Post
pawkow
post
Post #4





Grupa: Zarejestrowani
Postów: 76
Pomógł: 7
Dołączył: 30.09.2006

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


Kod
function pl_remove($text)
{
$pl_replace = array(
'ą' => 'a', 'ę' => 'e', 'ś' => 's', 'ć' => 'c', 'ó' => 'o',
'ń' => 'n', 'ż' => 'z', 'ź' => 'z', 'ł' => 'l',

'Ą' => 'A', 'Ę' => 'E', 'Ś' => 'S', 'Ć' => 'C','Ó' => 'O',
'Ń' => 'N', 'Ż' => 'Z', 'Ź' => 'Z', 'Ł' => 'L'
);

return str_replace(array_keys($pl_replace), array_values($pl_replace), $text);
}

Kod
function prepareURL($text)
{
$text = pl_remove($text);
$text = strtolower($text);
$text = str_replace(' ', '-', $text);
$text = preg_replace('/[^0-9a-z\-]+/', '', $text);
$text = preg_replace('/[\-]+/', '-', $text);
$text = trim($text, '-');
return $text;
}


i dajesz
Kod
echo prepareURL('tekst');


Ten post edytował pawkow 26.10.2008, 14:20:57
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 09:04