PHPで絵文字をUnicodeに変換するコード

作成日:

WordPressで本体に組み込まれている絵文字をTwemojiに変換するコードはJavaScriptだけだったので、PHPで最初から絵文字をTwemojiの画像に変換する方法を探しました。

重要なのは、絵文字を一旦Unicodeに変換して、それを元にTwemojiの画像パス作成することです。
このコードは以下の通りです。

PHP functions.php
/**
 * 機能:絵文字をTwemojiのSVG画像に置換.
 *
 * @param string $str 絵文字.
 * @return string
 */
function convert_emoji ( $str ) {
	$emoji   = mb_convert_encoding( $str, 'UTF-32', 'UTF-8' );
	$hex     = bin2hex( $emoji );
	$hex_len = strlen( $hex ) / 8;
	$chunks  = array();

	for ( $i = 0; $i < $hex_len; ++$i ) {
		$tmp          = substr( $hex, $i * 8, 8 );
		$chunks[ $i ] = format_emoji( $tmp );
	}
	$src = implode( '-', $chunks );
	return '<img loading="lazy" draggable="false" class="emoji" alt="' . $str . '" src="https://twemoji.maxcdn.com/v/13.0.0/svg/' . $src . '.svg">';
}

/**
 * 機能:絵文字をTwemojiのSVG画像に置換(フォーマット変換).
 *
 * @param string $str 絵文字.
 * @return string
 */
function format_emoji( $str ) {
	$copy = false;
	$len  = strlen( $str );
	$res  = '';

	for ( $i = 0; $i < $len; ++$i ) {
		$ch = $str[ $i ];

		if ( ! $copy ) {
			if ( $ch !== '0' ) {
				$copy = true;
			}
			elseif ( ( $i + 1 ) === $len ) {
				$res = '0';
			}
		}

		if ( $copy ) {
			$res .= $ch;
		}
	}
	return strtolower( $res );
}
echo convert_emoji( '{絵文字}' );
php - convert emoji to their hex code - Stack Overflow https://stackoverflow.com/questions/40575787/convert-emoji-to-their-hex-code

私は、例えばPOST(ソースは必要ありません)を介して取得した絵文字を検出しようとしています。 例として、私は次のような絵文字を使っています:✊🏾 (目に見えるようにしたい)

これで出来上がり。

物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。