Удалить непечатаемый символ

Каким образом с помощью регулярного выражения на PHP удалить этот символ? Ни один из ответов в интернете, в том числе и chatGPT мне не помогли.

Важно, чтобы из строки удалился только невидимый символ. Вот один из вариантов, который рекомендовался в интернете — не сработал, невидимый символ так и остался.

$first_name = 'ㅤtest qwe привет ❤️';
$first_name = preg_replace('/[\x00-\x1F\x7F]/u', '', $first_name);

echo $first_name;

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Алексей Р

В общем случае перед составлением регулярного выражения для очистки текста необходимо провести анализ предмета очистки (текста), т.е. какие множества символов необходимо сохранить, а какие удалить.

Используем, например, Конвертер символов в их числовые значения и обратно.
Находим, что искомый знак - это символ с кодом ㅤ или в шестнадцатеричном виде 3164. Используем правила RegEx и кодируем его в \x{3164}, потом помещаем в выражение '/[\x{3164}]/u' (квадратные скобки применены для общего случая, когда может быть задано множество и/или диапазоны исключаемых символов).

<?php
$first_name = 'ㅤtest qwe привет ❤️';
$first_name = preg_replace('/[\x{3164}]/u', '', $first_name);

echo $first_name;
test qwe привет ❤️

При необходимости удаления множества символов можно воспользоваться уже существующими (заданными) Unicode-подмножествами Regex, о чем можно прочесть, например, здесь. К примеру, \p{Zs} or \p{Space_Separator}.

→ Ссылка