Введение:
Эмодзи стали неотъемлемой частью нашего онлайн-общения, добавляя красок и эмоций нашим сообщениям. Однако бывают случаи, когда нам может потребоваться удалить смайлы из строки 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, теперь у вас есть инструменты, чтобы попрощаться с смайликами, когда это необходимо. Не забудьте учитывать конкретные требования вашего проекта и выбрать метод, который лучше всего соответствует вашим потребностям. Приятного кодирования!