- var_dump: documentation ( source)
- mb_substr: documentation ( source)
- mb_strlen: documentation ( source)
- json_encode: documentation ( source)
<?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);