2011-07-10 39 views
8

Tôi cần xóa tất cả các ký tự không phải tiếng Ả Rập khỏi chuỗi và cuối cùng là with the help of people from stack-overflow có thể tìm ra regex sau để loại bỏ tất cả các ký tự không phải là tiếng Ả Rập.Xóa ký tự rác trong tiếng Ả Rập

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

Vấn đề ở trên cũng loại bỏ khoảng trắng. Và bây giờ tôi phát hiện ra tôi cũng cần nhân vật từ A-Z,a-z,0-9, [email protected]#$%^&*(). Vì vậy, làm thế nào để tôi cần phải sửa đổi regex?

Cám ơn bạn

Trả lời

8

Thêm những người bạn muốn giữ cho lớp nhân vật của bạn:

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

giả sử bạn có chuỗi này:

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

này sẽ giữ cho chars arabic với không gian chỉ .

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

này sẽ giữ cho tiếng Ả Rập và tiếng Anh chars với số Chỉ

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

này sẽ trả lời câu hỏi của bạn sau này.

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

Trong một cách chi tiết hơn từ Ví dụ ở trên, Xét dưới đây là chuỗi của bạn:

$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,............ ~~~ ٍ،]ٍْ}~ِ]ٍ}"; '; 

Code:

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

Allows: chữ cái tiếng Anh, chữ Ả Rập, 0-9 và ký tự [email protected]#$%^&*().

Removes: Tất cả thẻ html và speci al ký tự khác hơn trên

Các vấn đề liên quan