preg_replace и preg_match арабские символы

Возможный дубликат:
как добавить арабские буквы в url regex

Я искал пару часов без ответа.

Как вы используете preg_replace для арабских персонажей, а также для английского?

это мой код – английский

$string = preg_replace ( "/&([a-zA-Z])(uml|acute|grave|circ|tilde|ring),/", "", $string ); $string = preg_replace ( "/[^a-zA-Z0-9_.-]/", "", $string ); 

некоторые из предложенных ответов я использую этот код:

 $string = preg_replace ( "/&([أ-يa-zA-Z])(uml|acute|grave|circ|tilde|ring),/u", "", $string ); $string = preg_replace ( "/[^أ-يa-zA-Z0-9_.-]/u", "", $string ); 

Я тестировал его, и он работает. но действительно ли это работает для php? включает ли он все арабские персонажи? есть ли лучший способ включить всех арабских персонажей?

Что я буду делать с кодом:

Замените все символы в строке на достоверные символы, дружественные к SEO.

Я решил проблему, используя этот код на основе http://www.unicodemap.org . Спасибо, Брайан.

 $string = preg_replace ( "/&([\x{0600}-\x{06FF}a-zA-Z])(uml|acute|grave|circ|tilde|ring),/u", "", $string ); $string = preg_replace ( "/[^\x{0600}-\x{06FF}a-zA-Z0-9_.-]/u", "", $string ); 

Карта символов Юникода – отличное место для визуализации групп символов, включая арабский, которые первая часть строки группирует для вас с помощью [أ-يa-zA-Z]

Если вы все еще не уверены, прочитайте немного больше о регулярных выражениях .

Что-то, что я вижу в ваших диапазонах, у вас есть [أ-ي] и я знаю, что справа – арабская буква A, первая буква. Я не знаком с первым, но я полагаю, что это что-то вроде последнего персонажа. Если это так, поскольку язык PHP является английским, вы можете изменить направление своего диапазона на [ي-أ] .

Кроме того, для нормализации я бы использовал диапазоны символов Unicode вместо этого, как предложил Брайан.