3v4l.org

run code in 300+ PHP versions simultaneously
<?php $utf8_str = "\xf0\x9f\x92\xa9"; $ret = ''; $length = mb_strlen($utf8_str, 'UTF-8'); for ($i = 0; $i < $length; $i++) { $char = mb_substr($utf8_str, $i, 1, 'UTF-8'); $l = strlen($char); if ($l <= 3) { $ret .= $char; } elseif ($l === 4) { $ret .= self::convert_char_to_cesu8($char); }// UTF-8で5文字以上になる文字はUnicodeとして不正なので無視(除去する) } $unko = $ret; var_dump($unko); $encode = json_encode($unko); var_dump($encode);

preferences:
42.42 ms | 402 KiB | 5 Q