Ein regulärer Ausdruck berücksichtigt standardmäßig keine UTF-8-Zeichen. Das \s
Metazeichen berücksichtigt nur den ursprünglichen lateinischen Satz. Daher entfernt der folgende Befehl nur Tabulatoren, Leerzeichen, Zeilenumbrüche und neue Zeilen
$str=preg_replace('/\s+/', '', $str);
Wenn UTF-8 zum Mainstream wird, wird dieser Ausdruck häufiger fehlschlagen / anhalten, wenn er die neuen utf-8-Zeichen erreicht, wobei Leerzeichen zurückbleiben, die \s
nicht berücksichtigt werden können.
Um mit den neuen Arten von Leerzeichen in Unicode / utf-8 fertig zu werden, ist eine umfangreichere Zeichenfolge erforderlich, um moderne Leerzeichen abzugleichen und zu entfernen.
Da reguläre Ausdrücke standardmäßig keine Mehrbytezeichen erkennen, können sie nur durch eine begrenzte Metazeichenfolge identifiziert werden, um zu verhindern, dass die Bytesegmente in anderen utf-8-Zeichen geändert werden ( \x80
im Quad-Satz könnten alle \x80
Subbytes ersetzt werden in intelligenten Anführungszeichen)
$cleanedstr = preg_replace(
"/(\t|\n|\v|\f|\r| |\xC2\x85|\xc2\xa0|\xe1\xa0\x8e|\xe2\x80[\x80-\x8D]|\xe2\x80\xa8|\xe2\x80\xa9|\xe2\x80\xaF|\xe2\x81\x9f|\xe2\x81\xa0|\xe3\x80\x80|\xef\xbb\xbf)+/",
"_",
$str
);
Dies berücksichtigt und entfernt Tabulatoren, Zeilenumbrüche, vertikale Tabulatoren, Formularvorschübe, Wagenrückläufe, Leerzeichen und zusätzlich von hier :
nextline, nicht unterbrechende Leerzeichen, mongolischer Vokaltrenner, [en quad, em quad, en space, em space, Drei-pro-em-Raum, Vier-pro-em-Raum, Sechs-pro-em-Raum, Figurenraum, Interpunktionsraum , dünner Raum, Haarraum, Raum mit der Breite Null, Nicht-Joiner mit der Breite Null, Joiner mit der Breite Null], Zeilentrennzeichen, Absatztrennzeichen, schmaler Raum ohne Unterbrechung, mittlerer mathematischer Raum, Wort-Joiner, ideografischer Raum und Nicht-Breite Raum brechen.
Viele davon verursachen Chaos in XML-Dateien, wenn sie von automatisierten Tools oder Websites exportiert werden, die die Textsuche und -erkennung beeinträchtigen und unsichtbar in den PHP-Quellcode eingefügt werden können, wodurch der Parser zum nächsten Befehl (Absatz- und Zeilentrennzeichen) springt, der Zeilen verursacht Der zu überspringende Code führt zu zeitweiligen, ungeklärten Fehlern, die wir als "textuell übertragbare Krankheiten" bezeichnen.
[Es ist nicht mehr sicher, aus dem Web zu kopieren und einzufügen. Verwenden Sie einen Zeichenscanner, um Ihren Code zu schützen. lol]