2016-10-06 10 views
2

Ich versuche, Vorschläge von Benutzereingaben zu laden, aber meine Abfrage schlägt fehl, wenn Benutzer einige Stanger Alphabete Zeichen eingeben (Chinesisch, Griechisch ...).Entfernen Sie Fremde Alphabete Zeichen aus Zeichenfolge

$alphaAccent = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ű', 'ý', 'ÿ'); 
    $str = preg_replace('/[^A-Za-z0-9\-'.implode($alphaAccent).']/', '', $str); // Removes special chars. 

Es sieht aus wie preg_replace nicht für diese Art von Zeichen überprüft, und setzt Zeichen in $str statt.

Irgendein Hinweis darauf?

+0

Sie benötigen den Modifikator '/ u' - https://ideone.com/kz8RBh –

+0

Haben Sie eine Rückmeldung? Sind Sie sicher, dass Ihre Quelldateien UTF8-codiert sind? –

+0

Nun, es scheint tatsächlich zu funktionieren. Ich war mir nicht sicher, weil ich danach andere Aktionen hatte, die meine Saite änderten, aber das schaffte es. Vielen Dank! –

Antwort

1

Sie müssen die /u UNICODE modifier an die Regex übergeben, so dass es die Kurz

$alphaAccent = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ű', 'ý', 'ÿ'); 
$str = preg_replace('/[^A-Za-z0-9\-'.implode($alphaAccent).']/u', '', $str); 

passen könnte, macht es das Muster Unicode bewusst und macht PHP die Zeichenfolge als Unicode-String zu behandeln.

Verwandte Themen