2016-05-05 9 views
0

Ich möchte mehr als 3 Mal aufhören, ein Zeichen zu wiederholen, um es 3 mal zu transformieren.Meine Regex erkennt kein arabisches Zeichen

Beispiel: aaaaaaaaaall => Anfragen Alle

Also, ich habe es mit Englisch Charakter, und es funktionierte:

$patternReplace = '/(.)\1{3,}/i'; 
$chaine = preg_replace($patternReplace, "$1$1$1", $chaine, -1); 

aber es funktioniert nicht für arabische Zeichen, wie:

أأأأأأأأأأأأأأأأأأأأأأأأأأأأ 

Dank für Hilfe

Antwort

0

Verwenden Sie den Modifikator u:

$patternReplace = '/(.)\1{3,}/iu'; 
$chaine = preg_replace($patternReplace, "$1$1$1", $chaine, -1); 

Dokumente aus PHP.net:

u (PCRE_UTF8)
Dieser Modifikator schaltet zusätzliche Funktionalität, die mit PCRE Perl nicht kompatibel ist. Pattern- und Subject-Strings werden als UTF-8 behandelt. Dieser Modifikator ist ab PHP 4.1.0 oder höher unter Unix und ab PHP 4.2.3 unter Win32 verfügbar. UTF-8-Gültigkeit des Musters und das Thema wird seit PHP 4.3.5 überprüft. Ein ungültiger Betreff führt dazu, dass die Funktion preg_ * nicht übereinstimmt. Ein ungültiges Muster löst einen Fehler der Stufe E_WARNING aus. Fünf- und sechs Oktett-UTF-8-Sequenzen gelten seit PHP 5.3.4 (bzw. PCRE 7.3 2007-08-28) als ungültig; früher wurden diese als gültige UTF-8 angesehen.

+0

danke viel !!!! – user3134277

+0

@ user3134277 Happy es hat für Sie gearbeitet! Um eine Antwort zu akzeptieren, drücken Sie das Häkchen unter den Pfeilen auf der linken Seite dieser Antwort :-) – andlrc