Zitat:
Solange es keine Zeichenklasse dafür bei Regulären Ausdrücken gibt dürfte es nicht möglich sein, einen Sinnvollen regulären Ausdruck zu erstellen, da ja allein schon das Chinesische mehrere Tausend Schriftzeichen kennt.
Das sollte eigentlich mit \w und UTF8 weitestgehend gehen... (any word character) Allerdings wäre für Arabisch, Chinesisch und alles andere eher UTF16 oder UTF32 sinnvoll, was allerdings nicht implementiert ist, soweit ich weiß.
Der passende Regex wäre dann sowas wie
[code=pseudo]
/Profile\/[-_\p{L}\p{N}]+$/u
[/code]
Dein Regex dürfte nicht korrekt funktionieren, da er bei der URL auch beispielsweise das Schema, die einzelnen Teile des Domainnamen und auch das Wort "Profile" matchen würde. Du musst also entweder den Regex für die komplette URL oder das Muster für ein sinnvolles Fragment definieren. Mein ungetesteter
Regex sollte das Wort "Profile" gefolgt von einem "/" und anschließend einer Zeichenkette, die aus "-", "_", Beliebigen Leerzeichen (Tab, Space,...), beliebigen Letter-Zeichen, Nummern-Zeichen suchen. Außerdem werden nur Elemente gematched, die am Ende der Zeichenkette stehen. Ich glaube nur nicht, dass das beim Replace-Problem hilft ;-)
Aber dafür vielleicht folgender Ansatz: Wie wäre es, dir den numerischen Wert anschaust. Damit sollte man leicht die Unerwünschten Umlaute suchen können, da die in der Regel zusammen liegen. In der Character-Class Doku heißt es:
Zitat von php.net:
Ranges operate in ASCII collating sequence. They can also be used for characters specified numerically, for example [\000-\037]. If a range that includes letters is used when case-insensitive (caseless) matching is set, it matches the letters in either case. For example, [W-c] is equivalent to [][\^_`wxyzabc], matched case-insensitively, and if character tables for the "fr" locale are in use, [\xc8-\xcb] matches accented E characters in both cases.
Etwas ähnliches könnte dann auch mit der Verwendung von UTF8 funktionieren.