wp_encode_emoji

Конвертирует эмодзи (emoji) символы в переданной строке в их HTML код (&#x1f31b).

Эмодзи (emoji) – это общепринятые (имеющие спецификацию и поддерживающиеся многими устройствами) картинки-смайлики в кодировке utf-8mb4, введенные в WordPress с версии 4.2. Например: ? ? ? ❄.

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

Такие символы-смайлики требует специальную кодировку utf8 при размещении их в БД, в противном случает символ не будет распознан и не сохраниться правильно. Конвертация с помощью wp_encode_emoji() позволяет сохранять эти символы в неподходящей для них кодировке utf8, где они сохраняются не как символы, а как их соответствующий код.

Кодировка utf-8 сама по себе поддерживает некоторые из иконок эмодзи, но далеко не все.

✈ 1 раз = 0.00028с = быстро | 50000 раз = 8.13с = быстро

Хуков нет.

Возвращает

Строку, в которой символы-смайлики заменены на соответствующие HTML сущности.

Использование

wp_encode_emoji( $content );
$content(строка) (обязательный)
Строка, символы в которой нужно заменить.

Примеры

#1 Демонстрация замены символов-смайликов в строке на HTML сущности

<?php
function wp_encode_emoji( $content ) {
	if ( function_exists( 'mb_convert_encoding' ) ) {
		$regex = '/(
		     x23xE2x83xA3               # Digits
		     [x30-x39]xE2x83xA3
		   | xF0x9F[x85-x88][xA6-xBF] # Enclosed characters
		   | xF0x9F[x8C-x97][x80-xBF] # Misc
		   | xF0x9Fx98[x80-xBF]        # Smilies
		   | xF0x9Fx99[x80-x8F]
		   | xF0x9Fx9A[x80-xBF]        # Transport and map symbols
		)/x';

		$matches = array();
		if ( preg_match_all( $regex, $content, $matches ) ) {
			if ( ! empty( $matches[1] ) ) {
				foreach ( $matches[1] as $emoji ) {
					/*
					 * UTF-32's hex encoding is the same as HTML's hex encoding.
					 * So, by converting the emoji from UTF-8 to UTF-32, we magically
					 * get the correct hex encoding.
					 */
					$unpacked = unpack( 'H*', mb_convert_encoding( $emoji, 'UTF-32', 'UTF-8' ) );
					if ( isset( $unpacked[1] ) ) {
						$entity = '&#x' . ltrim( $unpacked[1], '0' ) . ';';
						$content = str_replace( $emoji, $entity, $content );
					}
				}
			}
		}
	}

	return $content;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *