Funktion remove_accent und title_slug
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
akzent
array
code
deutsche umlaute
editor
filtern
forum
funktion
kodierung
letter
liegen
normalen buchstaben
quellcode
stelle
string
teich
teil
text
tip
zeichen
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 ... ?!
-
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");
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage