substitution

FunkyMonkey

Mitglied
Hallo

Ich habe irgendwo mal eine PHP-Funktion gesehen, die ganz simpel einen Zeichensatz gegen einen anderen ersetzen konnte. Das sah ungefähr so aus:

$meinstring = "irgend ein String mit bösen Zéìchén";
$charset1 = "äöüÄÖÜìíéè";
$charset2 = "aouAOUiiee";
$ersetzt = ersetzen($meinstring, $charset1, $charset2);

das war auf jeden Fall eine PHP-Funktion, nichts selbst gebasteltes...da bin ich mir sicher.

Hat jemand einen Tipp?
 
Richtig das hab ich vergessen. Muss dann so aussehen:

PHP:
$charset=array(
    'ä'=>'a',
    'Ä'=>'A',
    'ü'=>'u',
    'Ü'=>'U',
    'ö'=>'o',
    'Ö'=>'O',
    'ì'=>'i',
    'í'=>'i',
    'è'=>'e',
    'é'=>'e');
 
foreach($charset as $char => $rep_char){
 str_replace($char,$rep_char,$meinstring);
}
 
außerdem gibt es gegen html zeichen bzw für html zeichen auch eigene html-funktionen. html_specialchars etc etc

nutz mal das php handbuch auf php.net
 
Ich denke mal das es dir lediglich um das entfernen der Sonderzeichen und die rückführung auf den Ursprungsbuchstaben geht. Hierfür musste ich vor einiger Zeit auch etwas schreiben. Da ich aber zu Faul war eine Mapping Tabelle mit ein paar hundert möglichkeiten zu schreiben hier ein anderer Lösungsweg wie daraus wieder schöne Buchstaben werden:

PHP:
<?
function PrimalLetterEntiti($string){
    $string = htmlentities($string);
    $string = preg_replace("%\&(.+)(uml|acute|grave|circ|tilde|ring|lig|cedil|slash)\;%Us","\\1",$string);
    return $string;
}

echo PrimalLetterEntiti('äöâ');
?>
 
Solch eine Funktion musst du dir selbst schreiben:
PHP:
$meinstring = "irgend ein String mit bösen Zéìchén";
$charset1 = "äöüÄÖÜìíéè";
$charset2 = "aouAOUiiee";
$ersetzt = ersetzen($meinstring, $charset1, $charset2, 'iso-8859-1');

function ersetzen( $str, $from, $to, $encoding )
{
	$strlen = mb_strlen($from, $encoding);
	if( $strlen != mb_strlen($to, $encoding) ) {
		return false;
	}
	for( $i=0; $i<$strlen; $i++ ) {
		$str = str_replace(mb_substr($from, $i, 1, $encoding), mb_substr($to, $i, 1, $encoding), $str);
	}
	return $str;
}
Die Zeichenkodierung musst du vielleicht auf die von dir verwendete anpassen.
 
Zurück