28
2013
PHP – Konwertowanie UTF do ISO i znaki specjalne
Najczęściej używaną funkcją do konwertowania łańcuchów znaków jest
iconv
. Wydawać by się mogło, że w zupełności wystarcza do przejścia z UTF-8 na ISO-8859-2 lub odwrotnie.
Niestety przy konwersji z UTF na ISO, funkcja kończy działanie (ucina ciąg znaków) w momencie wystąpienia znaku specjalnego, np. trzy kropki, znak nowej linii wklejony z programu WordPad itp…
Rozwiązaniem dla tego problemu jest użycie funkcji mb_convert_encoding
.
Natomiast tutaj także nie wszystko działa tak jak należy. Ciągu znaków ta funkcja nie ucina i to jest OK, natomiast pojawia się inny zonk…
Wszystkie znaki specjalne zamienia na znaki zapytania :/
Ostatecznym rozwiązaniem jest napisanie prostej funkcji, która radziłaby sobie ze znakami specjalnymi oraz wstawianymi znakami zapytania przez mb_convert_encoding
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function utf2iso ( $text) { // zamiana/przechowanie prawdziwych znaków zapytania w tekscie // potem zostana ponownie odkodowane $text = str_replace( '?', '[[znak_zapytania]]', $text ); // kowertowanie z UTF na ISO $text = mb_convert_encoding( $text, 'ISO-8859-2', 'UTF-8'); // usuniecie znakow zapytania wygenerowanych przez funkcję mb_convert_encoding $text = str_replace( '?', ' ', $text ); // ponowne wstawienie prawdziwych znakow zapytania, które zostaly zamienione przed konwersja na poczatku funkcji $text = str_replace( '[[znak_zapytania]]', '?', $text ); return $text; } |
Podobne tematy
Dodaj komentarz
O mnie
Najnowsze wpisy
- Drzewo kategorii – budowa struktury od dołu do góry
- PHPExcel – export + import pliku XLS
- WordPress + Polylang – Tworzenie klasy CSS z ID strony/wpisu w wybranym języku
- Mailing – Poprawna konstrukcja szablonu maila HTML/CSS i prawidłowy wygląd w programie pocztowym
- Szukasz programisty PHP dla e-commerce?