Возможный дубликат:
как добавить арабские буквы в 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 вместо этого, как предложил Брайан.