php: ä zu ae ändern?

Code:
<?
function cv_input($str){
      $out = "";
      for ($i = 0; $i<strlen($str);$i++){
           $ch= ord($str{$i});
           switch($ch){
                case 195: $out .= "";break;     
                case 164: $out .= "ae"; break; 
                case 188: $out .= "ue"; break; 
                case 182: $out .= "oe"; break; 
                case 132: $out .= "Ae"; break; 
                case 156: $out .= "Ue"; break; 
                case 150: $out .= "Oe"; break;
                case 169: $out .= "e"; break;
                default : $out .= chr($ch) ;
           }
      }
      return $out;
}

echo cv_input("Léo");
?>

funktioniert hier ohne probleme und gibt Leo aus...
 
So wie in Deinem Code gibt es bei mir ebenfalls (HTML: LŽo) aus, so jedoch:

echo cv_input($username);

Immer noch Léo.
 
du musst das script dann schon im richtigen encoding speichern.
oder halt $username in UTF-8 wandeln...
 
Es ist nicht mein Script... Ich habe nur ein iframe

<iframe src="http://.........
&nick='.$username.'&......
 
Welche Codierung hat die Seite, in der das iframe eingebettet ist?
 
dann pack doch einfach ein
$username = mb_convert_encoding ( $username , "UTF-8");
mit rein, dann ist es UTF und fertig.
 
Kann ich schon nur löscht es mit so die Sonderzeichen. Jedenfalls ist nach
$username = mb_convert_encoding ( $username , "UTF-8");
Léo -> Lo geworden.

Ich brauche aber statt Léo -> Leo...
 
dann nimm halt iconv und pack den cv_input gleich mit dazu:
$username = cv_input(iconv(mb_detect_encoding($username),UTF-8//TRANSLIT,$username));

ist doch nicht so schwer...

aber ich frage mich gerade, ob du wirklich so code schreiben solltest, du fängst doch bestimmt nicht mal die SQL injection lücken ab ;)
 
Zuletzt bearbeitet:
Kann ich schon nur löscht es mit so die Sonderzeichen. Jedenfalls ist nach
$username = mb_convert_encoding ( $username , "UTF-8");
Léo -> Lo geworden.

Ich brauche aber statt Léo -> Leo...
Sach mal.. Steh ich bei dir auf der Ignore-List oder was ist an meiner Frage so schwer? :noplan:
 
Ich glaube auch. Klassischer Fall von PEBKAC. :hehehe:

Und endlich mal einer, mit dem man reden kann. :D Ich bin ja auch nicht der PHP Experte schlechthin. Deshalb bin ich an der Lösung auch interessiert. Kann die Webseitencodierung überhaupt Einfluss auf die $username Variable haben?
 
dann nimm halt iconv und pack den cv_input gleich mit dazu:
$username = cv_input(iconv(mb_detect_encoding($username),UTF-8//TRANSLIT,$username));

ist doch nicht so schwer...

aber ich frage mich gerade, ob du wirklich so code schreiben solltest, du fängst doch bestimmt nicht mal die SQL injection lücken ab ;)

Auch das schneidet alles ab dem Umlaut ab... also Léo wird zu L.

Klar habe ich keine Ahnung von dem ganzen... aber probieren kann ichs ja mal...
 
Ich würde annehmen (ohne mich besonders gut mit PHP auszukennen), daß Du das *Skript* in Unicode speichern mußt, damit es funktioniert. Denn Du verwendest im Skript die Konstante "ö". Wenn das Skript als ISO... gespeichert ist, paßt das nicht auf ein Unicode-ö.

EDIT: Also im Editor, wo Du das Skript schreibst, einstellen, daß er die Datei als UTF-8 speichern soll. Die Information im meta-Tag muß natürlich dazu passen.

Hast Du das gemacht?
 
Nein, habe ich tatsächli nicht. Wenn ich es in UTF-8 abspeichern möchte meldet Text Wrangler die Datei sei beschädigt -> die ä ö é usw werden nicht erkannt und werden ???...
 
Auch das schneidet alles ab dem Umlaut ab... also Léo wird zu L.

probier mal ohne das //TRANSLIT...


oder mal so was:
Code:
<?php

    $replacePairs = array(
        'ä' => 'ae',
        'ö' => 'oe',
        'ü' => 'ue',
        'é' => 'e'
    );
    echo strtr("léo", $replacePairs);

?>
 
Zuletzt bearbeitet:
So funktioniert der Code. Sobal ich aber echo strtr($username, $replacePairs); einsetzte, gibt es mit wieder nur "L" aus.
 
Zurück
Oben Unten