Удалить мусорные символы на арабском

Мне нужно было удалить все неарабские символы из строки, и в конце концов с помощью людей из переполнения стека удалось придумать следующее регулярное выражение, чтобы избавиться от всех символов, которые не являются арабскими.

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

Проблема в том, что выше также удаляет пробелы. И теперь я обнаружил, что мне нужен персонаж из A-Z,a-z,0-9, !@#$%^&*() также. Так как мне нужно изменить регулярное выражение?

Благодарю вас

3 ответа

Решение

Добавьте те, которые вы хотите сохранить, в свой класс персонажей:

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

Предположим, у вас есть эта строка:

$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);

Более подробно из вышеприведенного примера рассмотрим следующую строку:

$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-теги и специальные символы, кроме указанных выше

Другие вопросы по тегам