Прощаемся с эмодзи: как удалить эмодзи из строки PHP

Введение:

Эмодзи стали неотъемлемой частью нашего онлайн-общения, добавляя красок и эмоций нашим сообщениям. Однако бывают случаи, когда нам может потребоваться удалить смайлы из строки PHP, например, при обработке вводимых пользователем данных или выполнении анализа текста. В этой статье мы рассмотрим различные методы удаления смайлов из строки с помощью PHP. Итак, давайте углубимся и попрощаемся с этими милыми маленькими значками!

Метод 1: регулярные выражения

Один из способов удалить смайлы — использовать регулярные выражения. Мы можем сопоставить диапазон смайлов Unicode и заменить их пустой строкой. Вот пример:

function removeEmojisRegex($string) {
    $regex = '/[\x{1F600}-\x{1F64F}]/u';
    return preg_replace($regex, '', $string);
}
$string = "Hello! ???? How are you? ????";
$cleanString = removeEmojisRegex($string);
echo $cleanString; // Output: Hello! How are you?

Метод 2: диапазоны эмодзи в Юникоде

Эмодзи имеют определенные диапазоны Юникода, и мы можем воспользоваться этим, чтобы удалить их из строки. Перебирая каждый символ в строке и проверяя его значение в Юникоде, мы можем отфильтровать смайлы. Вот пример:

function removeEmojisUnicode($string) {
    $cleanString = '';
    $length = mb_strlen($string);
    for ($i = 0; $i < $length; $i++) {
        $char = mb_substr($string, $i, 1);
        $charCode = mb_ord($char);
        if ($charCode < 128 || ($charCode >= 256 && $charCode <= 767)) {
            $cleanString .= $char;
        }
    }
    return $cleanString;
}
$string = "Hello! ???? How are you? ????";
$cleanString = removeEmojisUnicode($string);
echo $cleanString; // Output: Hello! How are you?

Метод 3. Блоки Юникода для эмодзи

Эмодзи сгруппированы в блоки Юникода, и мы можем удалить их, исключив эти блоки из нашей строки. Вот пример:

function removeEmojisBlocks($string) {
    $blocks = [
        '\p{Block=Emoticons}',
        '\p{Block=Miscellaneous Symbols and Pictographs}',
        '\p{Block=Transport and Map Symbols}',
        // Add more blocks as needed
    ];
    $regex = '/[' . implode('', $blocks) . ']/u';
    return preg_replace($regex, '', $string);
}
$string = "Hello! ???? How are you? ????";
$cleanString = removeEmojisBlocks($string);
echo $cleanString; // Output: Hello! How are you?

Метод 4: библиотеки с открытым исходным кодом

Если вы предпочитаете более комплексное решение, существуют библиотеки с открытым исходным кодом, которые специально предназначены для удаления эмодзи в PHP. Одной из популярных библиотек является «Gemoji» ( https://github.com/knplabs/gemoji ), которая предоставляет методы для обнаружения и удаления смайлов из строк.

require_once 'path/to/vendor/autoload.php';
use Knplabs\Gemoji\Gemoji;
$gemoji = new Gemoji();
$string = "Hello! ???? How are you? ????";
$cleanString = $gemoji->stripEmoji($string);
echo $cleanString; // Output: Hello! How are you?

В этой статье мы рассмотрели несколько способов удаления смайлов из строки PHP. Предпочитаете ли вы регулярные выражения, диапазоны Юникода или библиотеки с открытым исходным кодом, такие как Gemoji, теперь у вас есть инструменты, чтобы попрощаться с смайликами, когда это необходимо. Не забудьте учитывать конкретные требования вашего проекта и выбрать метод, который лучше всего соответствует вашим потребностям. Приятного кодирования!