Удалить мусорные символы на арабском
Мне нужно было удалить все неарабские символы из строки, и в конце концов с помощью людей из переполнения стека удалось придумать следующее регулярное выражение, чтобы избавиться от всех символов, которые не являются арабскими.
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-теги и специальные символы, кроме указанных выше