\w in PHP preg_replace deckt nur das zweite byte der UTF-8-chars
haben wir diesen code:
$value = preg_replace("/[^\w]/", '', $value);
wo $value
ist in utf-8. Nach dieser transformation erste byte der multibyte-Zeichen werden entfernt. Wie man \w Abdeckung UTF-8 chars komplett?
Sorry, ich bin nicht sehr gut in PHP
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen, diese Funktion anstelle...http://php.net/manual/en/function.mb-ereg-replace.php
mb_ereg_replace
. Es basiert auf der veraltetenereg_replace
. Siehe php.net/ereg_replaceKönnte man versuchen Sie, mit der /u-modifier:
Wenn das nicht, versuchen Sie
mb_ereg_replace
- Ersetzen mit regulären Ausdruck mit multibyte-supportstatt.
Gibt es diese fiesen
u
- Modifizierer pcre-Muster in PHP. Es besagt, daß der regex ist in UTF8 kodiert, aber ich fand, dass es behandelt die Eingang als UTF8, auch.Anhängen
u
zu regex, um auf der multibyte-unicode-Modus von PCRE:Folge
Im unicode-Modus, PCRE erwartet alles von multibyte-und wenn es dann nicht da wird werden Probleme mit der Einhaltung der Fristen. Deshalb, um zu konvertieren, alles zu UTF-8 (und löschen Sie keine unconvertible junk), die wir zuerst verwenden:
sauber und prep die Eingabe.
Weil alles kann kodiert in ISO-8859-1 (auch wenn einige unverständliche Zeichen falsch angezeigt), und da die meisten web-Browser laufen nativ 8859 (es sei denn, sagte, dass UTF-8), die wir gefunden haben, diese Funktion als eine Allgemeine, sichere, effektive Methode, um 'alles nehmen, löschen junk-E-Mail und konvertieren in UTF-8'.
mb_ereg_* ist deprecated (veraltet 5.3.0 -- also die Verwendung dieser Funktionen ist nicht der richtige Weg zu gehen.
Verwenden
[^\w]+
statt[^\w]
Können Sie auch
\W
im Ort[^\w]