PHP Ékezetes karakterek eltávolítása UTF8 alatt.
October 30th, 2007 | Written by Varga Péter | Topic: web-devHa UTF-8 kódolást használunk (én mással nem is bajlódok), belefuthatunk abba a hibába, hogy az strstr() php függvény nem működik helyesen. A függvény feladata az lenne, hogy a felsorolt ékezetes karaktereket ékezet nélkülire konvertálja. Ennek az az oka, hogy utf8 alatt az egyes karakterek hossza nem egyezik meg a lecserélendőével. A függvény pedig pontosan ott keresi a felsorolásban a helyettesítő karaktert, ahol a lecserélendőkben találta. Sajnos ez a fv. alkalmatlan ezek után utf 8 szövegek konvertálására.
Használjuk helyette az str_repleace() függvényt!! 2db tömbbel párosítva (az egyszerűség kedvéért egy vesszővel elválasztott karaktersorozatot adunk meg, melyet explode()-függvénnyel tömbbé alakítunk) a következő képpen:
$szoveg="árvíztűrő tükörfúrógép"
$mit = explode(",","á,é,í,ő,ő,ó,ü,ű,ú");
$mire = explode(",","a,e,i,o,o,o,u,u,u");
$szoveg = str_replace($mit, $mire, $szoveg);
Ezzel a módszerrel nem fogunk hibás karaktreláncokat kapni UTF-8 kódolású oldalak esetén sem.
web-dev |



Comment by Atesz on the July 20th, 2009 at 08:08
Úúú tényleg, köszi hogy leírtad
véletlenül elfelejtettem hogy így is lehet. XD
Comment by sige on the December 1st, 2009 at 11:19
$mit = explode(“,”,”á,é,í,ö,ő,ó,ü,ű,ú,Á,É,Í,Ö,Ő,Ó,Ü,Ű,Ú”);
$mire = explode(“,”,”a,e,i,o,o,o,u,u,u,A,E,I,O,O,O,U,U,U”);
Comment by Varga Péter on the December 4th, 2009 at 23:48
Köszi a kiegészítést!
Comment by grof on the January 8th, 2010 at 14:54
miért az explode? plusz erőforrás..
$mit = array(‘á’, ‘é’…
$mire = array(‘a’, ‘e’…
Comment by nzm79 on the June 14th, 2010 at 17:33
Szevasz! Szinte mindenütt ezt a megoldást találni erre a problémára és valszinü jónak is kellene lennie. Sajna php-t csak minimális szinten használom / ismerem. Készítettem egy teszt file-t amiben ez áll:
‘;
print $newstr;
?>
A végeredmény:
sásvásáriőrség —> sásvásáriőrség
Vissza adja az eredeti ékezetes string-et.
????
Mit hibázhattam egy ilyen kis egyszerü holminál?
Comment by nzm79 on the June 14th, 2010 at 17:35
hoppá… az előző hozzászólásomból szinte tökéletesen hiányzik a php… ???
$mit = array(“á,é,í,ő,ő,ó,ü,ű,ú,Ö,Ü,Ó,Ő,Ú,É,Á,Ű”);
$mire = array(“a,e,i,o,o,o,u,u,u,O,U,O,O,U,E,A,U”);
$mystr = ‘sásvásáriőrség’;
$newstr = str_replace($mit, $mire, $mystr);
print $mystr;
print ‘ —> ‘;
print $newstr;
Comment by nzm79 on the June 15th, 2010 at 16:07
köszi már megoldódott:
$mit = array(“á”,”é”,”í”,”ő”,”ő”,”ó”,”ü”,”ű”,”ú”,”Ö”,”Ü”,”Ó”,”Ő”,”Ú”,”É”,”Á”,”Ű”);
$mire = array(“a”,”e”,”i”,”o”,”o”,”o”,”u”,”u”,”u”,”O”,”U”,”O”,”O”,”U”,”E”,”A”,”U”);