Neben der großartigen Antwort von Websupporter habe ich Folgendes gefunden:
Abhängig von Ihrer Nutzung kommt es darauf an, was Sie brauchen.
sanitize_title()
wie es sagt:
Akzente werden entfernt (akzentuierte Zeichen werden durch nicht akzentuierte ersetzt)
... und sanitize_title_with_dashes
sagt:
Beachten Sie, dass Sonderzeichen mit Akzent nicht ersetzt werden
Also, mit diesem Beispielstring :Â+Ä Ö %%% ßá %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~ èäç
sanitize_title()
Ergebnis:
aa-o-sa-% 20-oo-pp -_- eac
Wie Sie sehen, hat es Zeichen mit Akzent durch ihre nicht-akzentuierten Entsprechungen ersetzt und alle anderen nicht-alphanumerischen Zeichen mit Ausnahme der Zeichen, auf die %
eine Zahl folgt, entfernt. Sie werden jedoch feststellen, dass sie entfernt wurden, als ein Buchstabe darauf folgte. Vielleicht liegt es daran, dass es es als bereits codiert wahrnimmt . Dies wird erzwungen, wenn Sie versuchen, %c3
eine Zeichenfolge einzufügen. Die Zeichenfolge wird nicht entfernt, da %c3
es sich um eine gültige Codierungssequenz handelt.
sanitize_title_with_dashes
Ergebnis:
% c3% a2% c3% a4-% c3% b6-% c3% 9f% c3% a1-% 20-oo-pp -_-% c3% a8% c3% a4% c3% a7
Wie Sie sehen, wurden die Zeichen mit Akzenten nicht entfernt, sondern codiert.
Schauen wir uns nun eine Zeichenfolge ohne Akzentzeichen an, um zu sehen, wie sich beide verhalten ...
Beispiel String: %%% building %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~'
sanitize_title()
Ergebnis:
Gebäude-% 20-oo-pp-_
sanitize_title_with_dashes
Ergebnis:
Gebäude-% 20-oo-pp-_
Sie sehen also, dass sie genau gleich sind. Der einzige Unterschied besteht also darin, dass eine Charta mit Akzent codiert, während die andere sie ersetzt .