删除阿拉伯语中的垃圾字符

时间:2011-07-10 18:47:04

标签: php regex

我需要从字符串中删除所有非阿拉伯字符,最终with the help of people from stack-overflow能够提出以下正则表达式来删除所有不是阿拉伯语的字符。

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

问题是上面也删除了空格。现在我发现我还需要来自A-Z,a-z,0-9, !@#$%^&*()的角色。那么我该如何修改正则表达式呢?

感谢你

3 个答案:

答案 0 :(得分:10)

将要保留的内容添加到角色类中:

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

答案 1 :(得分:2)

假设你有这个字符串:

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

这将使阿拉伯语字符只留空格。

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

这将使阿拉伯语和英语字符仅限数字

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

这将在后面回答你的问题。

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

答案 2 :(得分:0)

以上示例中更详细的方式,以下是您的字符串:

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

代码:

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

Allows:英文字母,阿拉伯字母,0到9和字符!@#$%^&*().

Removes:所有html标签,以及上述

以外的特殊字符