2011-07-10 17 views
8

Musiałem usunąć wszystkie znaki spoza alfabetu arabskiego z ciągu znaków, a ostatecznie with the help of people from stack-overflow udało mi się wymyślić następujące wyrażenie, aby pozbyć się wszystkich znaków, które nie są arabskie.Usuń znaki śmieci w języku arabskim

preg_replace('/[^\x{0600}-\x{06FF}]/u','',$string); 

Problem polega na tym, że usuwa również białe spacje. A teraz odkryłem, że będę potrzebował również postaci z A-Z,a-z,0-9, [email protected]#$%^&*(). Więc w jaki sposób muszę zmodyfikować wyrażenie regularne?

Dziękując

Odpowiedz

8

Dodaj te, które chcesz zachować do swojej klasy postaci:

preg_replace('/[^\x{0600}-\x{06FF}A-Za-z [email protected]#$%^&*()]/u','', $string); 
1

że masz ten ciąg:

$str = "Arabic Text نص عربي test 123 و,.m,............ ~~~ ٍ،]ٍْ}~ِ]ٍ}"; 

to zachowa arabskie znaków ze spacjami tylko .

echo preg_replace('/[^أ-ي ]/ui', '', $str); 

to zachowa arabskim i angielskim znaki z numerami Tylko

echo preg_replace('/[^أ-يA-Za-z0-9 ]/ui', '', $str); 

to będzie odpowiedź na pytanie później.

echo preg_replace('/[^أ-يA-Za-z [email protected]#$%^&*()]/ui', '', $str); 
0

W bardziej szczegółowy sposób z powyższego przykładu, zważywszy, poniżej jest ciąg:

$string = '<div>This..</div> <a>is<a/> <strong>hello</strong> <i>world</i> ! هذا هو مرحبا العالم! [email protected]#$%^&&**(*)<>?:";p[]"/.,\|`[email protected]#$%^&^&*(()908978867564564534423412313`1`` "Arabic Text نص عربي test 123 و,.m,............ ~~~ ٍ،]ٍْ}~ِ]ٍ}"; '; 

Kod:

echo preg_replace('/[^\x{0600}-\x{06FF}A-Za-z0-9 [email protected]#$%^&*().]/u','', strip_tags($string)); 

Allows: angielskie litery, litery arabskie, od 0 do 9 oraz znaki [email protected]#$%^&*().

Removes: Wszystkie znaczniki html i specyfikacje al znaki inne niż powyżej

Powiązane problemy