Samstag, 21. Mai 2011

PHP- Bestimmte Zeichen oder bestimmtes Zeichen suchen und ersetzen

Möchte man zum Beispiel aus einem Artikelnamen einen schönen Link machen, ohne Leerzeichen, dann braucht man eine PHP Anweisung. Es gibt wie imme rbei PHP mehrere Lösungen. Hier eine davon:
Beispiel:
1 Schritt:
$Artikelname: "Frau Dr. Angela Merkel ist die gefährlichste Frau der Welt"
echo str_replace (" ","-",$Artikelname);
Somit erhalten wir:->  Frau-Dr.-Merkel-ist-die-gefährlichste-Frau-der-Welt
Allerdings sollte man statt str_replace ereg_replace nutzen, da man so die ausgabe der umalute sichert.  

2 Schritt:
Unterschiedliche Groß und Kleinschreibung ist für einen Link schrott. Daher wandelt man das gleich auch um. Hier hilft uns die PHP Anweisung: strtolower
Das sieht in unserem Beispiel dann so aus:
echo strtolower (str_replace (" ","-",$Artikelname));
das macht dann: frau-dr.-merkel-ist-die-gefährlichste-frau-der-welt

Auch hier ist es ratsamer mit der mb_strtolower Variante zu arbeiten, wenn man Umlaute im Artikel erwartet.



3. Schritt:
Jetzt fehlt uns nur noch das wir so komische Zeichen rausbekommen wie: (.) (;) (:) (() ()) (*) (#) usw.
in unserem Beispiel ist es der Punkt nach Dr.und zwar mit ereg_replace (siehe Schritt eins) Allerdings kann man alle gewünschten Zeichen die man raushaben will, in eine Variable schreiben und die für das ersetzen nutzen. bsp.

<?php
$aktivitaet='Hallo dies ist ein 1234567890 Tästtext!!!&%$§?';
echo $aktivitaet.'<br>';
$aktivitaet=preg_replace("/[^a-zA-Z0-9_äöüÄÖÜ]/" , "" , $aktivitaet);
echo $aktivitaet;
?>


Und wie wir den Doktor von Gutenberg rausbekommen, könnt ihr euch schon bereits selbst beantworten ;-)

Anmekrung: Es kann sein dass wenn Du sonderzeichen ersetzen willst, dass nicht immer funktioniert. Ich vermute es hat viel mit dem Dateien Format zu tun. Also ob es in UTF-8 oder ASCI gespeichert ist. Wenn Du zum Beispiel in Wordpress Dateien solch lustige Funktionen einbauen willst, empfiehlt sich die Daten zu decoden. Siehe folgendes Beispiel:

$umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/","/G/");
$replace = Array("ae","oe","ue","Ae","Oe","Ue","ss","g");
$my_strasse2 = preg_replace($umlaute, $replace, utf8_decode($meta_values2));

Keine Kommentare:

Kommentar veröffentlichen