string szűrés

Hogy tudnám azt legegyszerűbben megoldani php-ben, (esetleg végnyálazó ciklusok nélkül )hogy egy adott tetszőleges stringből egy olyat csinálni, amiben csak betük számok és aláhúzás (space csere aláhúzásra) szerepeljen magyar ékezetes betük konvertálásával ékezet nélkülire.
Az utóbbit már megoldottam, csak a felesleges karakterek kiszedése okoz gondot, mert csak favágó megoldások jutnak eszembe.


        setlocale(LC_CTYPE, 'en_US.UTF8');
        $_POST['uname']= iconv('UTF-8', 'ASCII//TRANSLIT',$_POST['uname']);

Az ékezetmentesítést így csináltam.

Hozzászólások


$be = "Valami szoveg";
$be = str_replace(" ", "_", $be);
$ki = ereg_replace("[^A-Za-z0-9_]", "", $be);

Tipp-hopp biztos van jobb és szebb és ügyesebb....

Szerkesztve: felejtős...

--
A gyors gondolat többet ér, mint a gyors mozdulat.

Na tényleg utolsó, kipróbált, nekem működő solution:


<?php
function purge_bad_chars($in)
{
	setlocale(LC_CTYPE, 'en_US.UTF8');
	$in = iconv('UTF-8', 'ASCII//TRANSLIT', $in);
	$in = str_replace(" ", "_", $in);
	$out = ereg_replace("[^A-Za-z0-9_]", "", $in);
	
	return $out;
}
$be = "Valami_szoveg... 123 xXx_áéúőóüííúőü";
echo "BE: ".$be."\n";
echo "KI: ".purge_bad_chars($be);
?>

--
A gyors gondolat többet ér, mint a gyors mozdulat.

Az strtr lehet gyorsabb bizonyos esetekre. Bar a tobbkarakteres esetben (vagy ha torolni kell) nem jo.
Az ereg_replace helyett pedig a preg_replace gyorsabb, es tobbet is tud (a PCRE lib-et hasznalja, ami eleg gyors, raadasul ismeri a Perl regexp szintaxisat).

----
I have a solaris box that does nothing.. its pretty good at it aswell. - besok, deviantart
honlapkészítés