kostenloser Webspace werbefrei: lima-city


Funktion remove_accent und title_slug

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    kataloge

    kataloge hat kostenlosen Webspace.

    Hallo

    Hier mal ein Codeschnipsel ... ein Tutorial .... ein Tipp .... 2 Funktionen

    Funktion: remove_accent() ......für:
    Buschstaben mit Akzent oder Zirkumflex oder etc. zu "normalen" Buchstaben machen

    und

    Funktion: title_slug() ..... für
    Titel von Seiten (für Mod_Rewrite) zu Dateinamen (SEO-URLs) machen


    Quellcode:

    <?php 
    // ------------------------------------------------- 
    // ----- remove_accent - ohne deutsche Umlaute ----- 
    // ------------------------------------------------- 
    
    function remove_accent($str) { 
    
    $a = array( 'À', 'Á', 'Â', 'Ã', 'Å', 'Æ' , 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ø', 'Ù', 'Ú', 'Û', 'Ý', 'à', 'á', 'â', 'ã', 'å', 'æ' , 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ø', 'ù', 'ú', 'û', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ' , 'ij' , 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ' , 'œ' , 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ' , 'ǽ' , 'Ǿ', 'ǿ' ); 
    $b = array( 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'Y', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o' ); 
    
    
    $str = str_replace($a, $b, $str);
    
    return $str; 
    
    }
    
    
    
    // ------------------------------------------------- 
    // ------- title_slug - mit deutsche Umlaute ------- 
    // ------------------------------------------------- 
    
    function title_slug($str) { 
    
    $ua = array( 'Ä' , 'Ö' , 'Ü' , 'ä' , 'ö' , 'ü' , 'ß' , '€' ); 
    $ub = array( 'Ae', 'Oe', 'Ue', 'ae', 'oe', 'ue', 'ss', 'EUR' ); 
    
    $str = str_replace($ua, $ub, $str); 
    
    $str = remove_accent($str); 
    
    $pa = array('/[^a-zA-Z0-9 -]/', '/[ -]+/', '/^-|-$/'); 
    $pb = array('', '-', ''); 
    
    $str = preg_replace($pa, $pb, $str);
    
    $str = strtolower($str); 
    
    return $str; 
    
    }
    
    // ------------------------------------------------- 
    ?>




    Wenn ich den Quellcode in meinen Editor (Ur-alt Dreamweaver 4) kopiere,
    dann sehe ich folgenden Code (???) .. am Anfang siehts noch gut aus .. aber dann

    ... 
    $a = array( 'À', 'Á', 'Â', 'Ã', 'Å', 'Æ' , 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ø', 'Ù', 'Ú', 'Û', 'Ý', 'à', 'á', 'â', 'ã', 'å', 'æ' , 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ø', 'ù', 'ú', 'û', 'ý', 'ÿ', 'A-', 'a-', 'A(', 'a(', 'A;', 'a;', 'C'', 'c'', 'C^', 'c^', 'C.', 'c.', 'C(', 'c(', 'D(', 'd(', '?', '?', 'E-', 'e-', 'E(', 'e(', 'E.', 'e.', 'E;', 'e;', 'E(', 'e(', 'G^', 'g^', 'G(', 'g(', 'G.', 'g.', 'G,', 'g,', 'H^', 'h^', '?', '?', 'I~', 'i~', 'I-', 'i-', 'I(', 'i(', 'I;', 'i;', 'I.', '?', 'IJ' , 'ij' , 'J^', 'j^', 'K,', 'k,', 'L'', 'l'', 'L,', 'l,', 'L(', 'l(', 'L.', 'l.', '?', '?', 'N'', 'n'', 'N,', 'n,', 'N(', 'n(', ''n', 'O-', 'o-', 'O(', 'o(', 'O"', 'o"', 'Œ' , 'œ' , 'R'', 'r'', 'R,', 'r,', 'R(', 'r(', 'S'', 's'', 'S^', 's^', 'S,', 's,', 'Š', 'š', 'T,', 't,', 'T(', 't(', '?', '?', 'U~', 'u~', 'U-', 'u-', 'U(', 'u(', 'U*', 'u*', 'U"', 'u"', 'U;', 'u;', 'W^', 'w^', 'Y^', 'y^', 'Ÿ', 'Z'', 'z'', 'Z.', 'z.', 'Ž', 'ž', 's', 'ƒ', 'O+', 'o+', 'U+', 'u+', 'A(', 'a(', 'I(', 'i(', 'O(', 'o(', 'U(', 'u(', 'U"-', 'u"-', 'U"'', 'u"'', 'U"(', 'u"(', 'U"`', 'u"`', 'A*'', 'a*'', 'AE'' , 'ae'' , 'O/'', 'o/'' ); 
    ...


    also zum Teil voll der Blödsinn .... ?!?!? derdas Array unbrauchbar macht ... 'u"-', 'U"'', 'u"'', ...
    oder mancha auch nur als ? .... 't(', '?', '?', 'U~', ...

    daher hier nochmal in anderer Formatierung:

    <?php 
    // ------------------------------------------------- 
    // ----- remove_accent - ohne deutsche Umlaute ----- 
    // ------------------------------------------------- 
    
    function remove_accent($str) { 
    
    $a = array( 'À', 'Á', 'Â', 'Ã', 'Å', 'Æ' , 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ø', 'Ù', 'Ú', 'Û', 'Ý', 'à', 'á', 'â', 'ã', 'å', 'æ' , 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ø', 'ù', 'ú', 'û', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ' , 'ij' , 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ' , 'œ' , 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ' , 'ǽ' , 'Ǿ', 'ǿ' ); 
    
    $b = array( 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'Y', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o' ); 
    
    
    $str = str_replace($a, $b, $str);
    
    return $str; 
    
    }
    
    
    
    // ------------------------------------------------- 
    // ------- title_slug - mit deutsche Umlaute ------- 
    // ------------------------------------------------- 
    
    function title_slug($str) { 
    
    $ua = array( 'Ä' , 'Ö' , 'Ü' , 'ä' , 'ö' , 'ü' , 'ß' , '€' ); 
    $ub = array( 'Ae' , 'Oe' , 'Ue' , 'ae' , 'oe' , 'ue' , 'ss' , 'EUR' ); 
    
    $str = str_replace($ua, $ub, $str); 
    
    $str = remove_accent($str); 
    
    $pa = array('/[^a-zA-Z0-9 -]/', '/[ -]+/', '/^-|-$/'); 
    $pb = array('', '-', ''); 
    
    $str = preg_replace($pa, $pb, $str);
    
    $str = strtolower($str); 
    
    return $str; 
    
    }
    
    // ------------------------------------------------- 
    ?>


    aber anstatt der hier gezeigten Platzhalter wie  oder  sehe ich in meinem Editor
    die entsprechenden Sonderzeichen, die damit abgebildet werden

    auch wenn ich mir den Code hier wieder raus-kopiere
    also kann das Forum einfach ein paar Zeichen nur ala  oder  etc. darstellen,
    die kommen aber bei copy+paste anscheinend doch "richtig" im Editor an ...





    Beitrag zuletzt geändert: 23.11.2011 19:45:01 von kataloge
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich benutze dafür Notepad++. Letztlich wirds an der Kodierung (UTF-8 ohne BOM) liegen. Ich würde an deiner Stelle auch eher die dazugehörigen ASCII-Codes verwenden, an Stelle der "Originalzeichen". Damit kann jeder Editor umgehen und du hast keinerlei Kodierungsprobleme.
  4. Autor dieses Themas

    kataloge

    kataloge hat kostenlosen Webspace.

    Aber wie bekomme ich den String, den ich filtern will
    in das passende Format (die passende Codierung) ?

    Wenn ich als Ausgangs-String iso-8859-1 habe
    und diesen mit utf8_encode() behandle, funktioniert das nicht
    weil viele Zeichen falsch oder als ? im neuen String ankommen ?!

    Beispiel Euro-Zeichen

    € = Ausgangs-Teichen
    € = nach utf8_encode('€');
    ? = nach utf8_decode('€');

    Soweit ich weiss ist aber das € Zeichen in UTF-8 so: €
    zumindest wird bei einer charset=utf-8 Seite damit das € Zeichen angezeigt

    ? ...

    bringt es was alle Zeichen im Text zum Filtern mit chr() Werten von ord() zu vergleichen?

    function string_to_ascii($string) {
    $ascii = array();
    
    for ($i = 0; $i < strlen($string); $i++) {
    $ascii[] = ord($string[$i]);
    }
    
    return($ascii);
    }


    und damit die 2 Arrays in ord() Werte umwandeln

    foreach($a as $itema) {
      $asciistr = string_to_ascii($itema); 
      $letter = ''; 
      foreach($asciistr as $aitem) { 
      $a_letter .= chr($aitem); 
      } 
    $aord[] = $a_letter;
    }



    foreach($b as $itemb) {
      $asciistr = string_to_ascii($itemb); 
      $letter = ''; 
      foreach($asciistr as $bitem) { 
      $b_letter .= chr($bitem); 
      } 
    $bord[] = $b_letter;
    }


    bringt das was?
    ... oder wie kann ich Strings immer "richtig" zu UTF-8 konvertieren
    bei einfachem utf8_encode() kommt zu oft Müll raus ... ?!


  5. Du hast soooo viele Möglichkeiten. Du könntest auch einfach die Zeichen mittels Base64 verschlüsseln/entschlüsseln. Oder du prüfst mit mb_detect_encoding, welche Kodierung verwendet wird. chr() ist auch keine schlechte Idee :)

    Zudem:

    header("Content-Type: text/html; charset=utf-8");
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!