Mehrere Zeichen durch ein Zeichen ersetzen

Myar

Mitglied
Hallöchen!

Folgendes Problem:
Ich habe Strings, die Leerzeichen und auch Sonderzeichen enthalten wie sowas als kleines Beispiel:

Das ist ein String mit einer Zahl 5 - und nem Doppelpunkt: wo es noch kurz weiter geht

Der soll halt so aussehen:

das-ist-ein-string-mit-einer-zahl-5-und-nem-doppelpunkt-wo-es-noch-kurz-weiter-geht

Bisher habe ich es so versucht:

PHP:
str_replace(array(": ", " - ", " "), "-",trim(strtolower($string)))

Das hat aus meinem String aber das gemacht:

das-ist-ein-string-mit-einer-zahl-5---und-nem-doppelpunkt-wo-es-noch-kurz-weiter-geht

Wäre ja fast richtig, nur diese drei Striche bei der Zahl sind irgendwie doof. Hat jemand ne Idee, wie ich das hinbekomme?

Viele Grüße
Myar
 
Hallöchen!

Ich habe leider doch noch ein Problemchen festgestellt.
Wenn im String ein en-dash, also HTML Code & #8211 vorkommt, dann passiert mit folgendem Ausdruck:

PHP:
preg_replace('/\W+/','-',strtolower(trim($str)));

dass aus dem en-dash die Zahl 8211 wird. Der en-dash soll aber auch einfach verschwinden bzw. würde es mir ja schon reichen, den en-dash zu einem normalen - umzuwandeln. :/

Edit: Okay, es mussten zwei Schritte sein

PHP:
$str = str_replace('&#8211','',$str);
return preg_replace('/\W+/','-',strtolower(trim($str)));
 
Zuletzt bearbeitet:
Zurück