Sonderzeichen bzw. Umlaute Anpassen?!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sonderzeichen bzw. Umlaute Anpassen?!

    Hallo,

    ich möchte umlaute wie z.B. ü,ö,ä in der URL automatisch ändern lassen. Habe mir deshalb folgende Code-Schnipsel zusammengebastelt.

    PHP-Code:
    function plaintext($str) {
            
    $str=strtolower($str);
            
    $occs = Array(','' ''>''<''?''.''"''&#039'';''#' ,'&amp','/','=','-','+',':','@','!');
            
    $reps = Array('_''_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_');
            
    $str str_replace($occs,$reps,$str);
            
    $arr explode("_",$str);
            foreach(
    $arr as $key => $val) {
                if(
    trim($val) == "")
                    unset(
    $arr[$key]);
            }
            
    $str implode("-",$arr);
            return 
    $str;
        }
        
       function 
    key_to_file($key_trans) {
        
    // Umlaute ersetzen:
        
    $umlaute = ARRAY("ä","ö","ü");
        
    $ersetzen = ARRAY("ae","oe","ue");
        
    $key_trans str_replace($umlaute,$ersetzen,$key_trans);
        
    // Sonderzeichen mit LZ ersetzen:
        
    $key_trans preg_replace('%[^a-z0-9]%siU',' ',$key_trans);
        
    // Leerzeichen mit "-" ersetzen:
        
    $key_trans preg_replace('%( ){1,}%','-',$key_trans);
        return (
    $key_trans);
        } 
    Leider funkt das ganze nicht so, wie es sein sollte.

    Für Konstruktive Antworten währe ich sehr dankbar.

    Gruss


    Wer Liebe gibt, kriegt auch Liebe zurück. Daher hasse ich PHP ;-)

  • #2
    url_encode()

    Original geschrieben von -=Taipan=-
    Für Konstruktive Antworten währe ich sehr dankbar.
    und ich für eine konstruktive problembeschreibung.

    Kommentar


    • #3
      Hi penizillin!

      Wenn ich aktuelle News auf meiner Seite veröffentliche, wird dies zugleich auch als URL verwendet. Deshalb möchte ich die Umlaute in der URL mit der Funktion key_to_file erzetzen lassen.

      Bsp.
      ich_bin_ein_url_ü ber_germany.html erstzen mit -> ich_bin_ein_url_ue ber_germany.html


      Wer Liebe gibt, kriegt auch Liebe zurück. Daher hasse ich PHP ;-)

      Kommentar


      • #4
        und das problem?

        Kommentar


        • #5
          Das Problem: Es funktioniert nicht. Die Umlaute im URL bleibt dasselbe? Sprich "ü" und nicht "ue" oder "ä" nicht "ae" usw.
          Zuletzt geändert von -=Taipan=-; 12.06.2007, 02:54.


          Wer Liebe gibt, kriegt auch Liebe zurück. Daher hasse ich PHP ;-)

          Kommentar


          • #6
            und wie benutzst du die funktion?

            Kommentar


            • #7
              Ich habe hiermit gute Erfahrungen gemacht
              PHP-Code:
              function str2url(&$needle){
                  
              $search =  array("ä""Ä""ü""Ü""ö""Ö""ß");
                  
              $replace = array("ae""ae""ue""ue""oe""o""ss");
                  
              $needle=str_replace($search$replace$needle);
                  
              $needle=urlencode($needle);

              nur als Denkanstoß zum Erweitern und Anpassen
              Und ist man alt wie ein Kuh, lernt man immer noch dazu.
              THX, LOL, ROFL & Co. -> Netzjargon auf Wikipedia

              Kommentar


              • #8
                und wie benutzst du die funktion?
                So: Aber das scheint auch nicht die Lösung zu sein
                PHP-Code:
                function plaintext($str) {
                        
                $str=strtolower($str);
                        
                $occs = Array(','' ''>''<''?''.''"''&#039'';''#' ,'&amp','/','=','-','+',':','@','!');
                        
                $search =  array("ä""Ä""ü""Ü""ö""Ö""ß");
                        
                $replace = array("ae""ae""ue""ue""oe""o""ss");
                        
                $reps = Array('_''_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_');
                        
                $str str_replace($occs,$search,$replace,$reps,$str);
                        
                $str urlencode($str);
                        
                $arr explode("_",$str);
                        foreach(
                $arr as $key => $val) {
                            if(
                trim($val) == "")
                                unset(
                $arr[$key]);
                        }
                        
                $str implode("-",$arr);
                        return 
                $str;
                    } 
                Danke Husti für die Denkansatz.


                Wer Liebe gibt, kriegt auch Liebe zurück. Daher hasse ich PHP ;-)

                Kommentar


                • #9
                  du rufst key_to_file nirgendwo auf. du machst nirgendwo testausgaben. du sagst nicht, _was_ nicht funktioniert. wie soll man dir helfen?

                  husti hat es schon vorgemacht:
                  PHP-Code:
                  $s 'bär';
                  echo 
                  str_replace(array('ä'), array('ae'), $s); 

                  Kommentar


                  • #10
                    (the one and only) PHP-Handbuch sagt:
                    mixed str_replace ( mixed search, mixed replace, mixed subject )
                    Diese Funktion ersetzt alle Vorkommen von search innerhalb der Zeichenkette subject durch den String replace.
                    Bei dir
                    PHP-Code:
                    $str str_replace($occs,$search,$replace,$reps,$str); 
                    evtl. zuviele Argumente?
                    Und ist man alt wie ein Kuh, lernt man immer noch dazu.
                    THX, LOL, ROFL & Co. -> Netzjargon auf Wikipedia

                    Kommentar


                    • #11
                      evtl. zuviele Argumente?
                      Sicher und error_reporting() nicht auf höchster Stufe und/oder display_error auf 0
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        Verdammt! Es will einfach nicht funktionieren
                        Ich habe die Argumente wieder auf 3 reduziert und es so gemacht wie du es vorgeschlagen hast. Dennoch will es einfach nicht funken

                        PHP-Code:
                            function plaintext($str) {
                                
                        $str=strtolower($str);
                                
                        $occs = Array(','' ''>''<''?''.''"''&#039'';''#' ,'&amp','/','=','-','+',':','@','!');
                                
                        $reps = Array('_''_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_');
                                
                        $search 'bär';
                                echo 
                        str_replace(array('ä''Ä''ü''Ü''ö''Ö''ß'), array('ae''ae''ue''ue''oe''o''ss'), $search);
                                
                        $str str_replace($occs,$reps,$str);
                                
                        $arr explode("_",$str);
                                foreach(
                        $arr as $key => $val) {
                                    if(
                        trim($val) == "")
                                        unset(
                        $arr[$key]);
                                }
                                
                        $str implode("-",$arr);
                                return 
                        $str;
                            } 


                        Wer Liebe gibt, kriegt auch Liebe zurück. Daher hasse ich PHP ;-)

                        Kommentar


                        • #13
                          du rufst die funktion gar nicht auf.

                          Kommentar


                          • #14
                            @jahlives
                            Rethorik=evtl. zuviele Argumente?

                            @Taipan
                            1. Tasse (Eis)Tee holen und dran nippen
                            2.1 "error_reporting(E_ALL);" an den Anfang deines Skriptes setzen + ausführen
                            2.2 Funktion + Aufruf der Funktion + Fehlermeldung am konkreten Beispiel posten (evtl. Code umbrechen)
                            3. streiche "es funkt nicht", "es funktioniert nicht" usw. und ersetze mit was soll und was ist
                            Und ist man alt wie ein Kuh, lernt man immer noch dazu.
                            THX, LOL, ROFL & Co. -> Netzjargon auf Wikipedia

                            Kommentar


                            • #15
                              Ja aber wie soll ich die Funktion abrufen! Mehr als 3 Argumente kann ich mit der variablen $str nicht ausgeben lassen (hab ihr doch gesagt). Sorry, aber mein PHP-Latein reicht für soviel aus

                              Hutsi du meinst bestimmt Jim Beam Flasche
                              Zuletzt geändert von -=Taipan=-; 12.06.2007, 14:46.


                              Wer Liebe gibt, kriegt auch Liebe zurück. Daher hasse ich PHP ;-)

                              Kommentar

                              Lädt...
                              X