/** * 文字列にサロゲートペアが含まれるかどうかをチェックします。 * * @param string $str チェック対象の文字列 * @return bool|string サロゲートペアが含まれない場合false、含まれる場合該当の文字 */ function contains_surrogate_pair_character($str) { if ($str === NULL) return FALSE; // UTF-16へ変換し、一文字ずつチェックを行う $str_utf16 = mb_convert_encoding($str, "UTF-16", "UTF-8"); $str_length = mb_strlen($str_utf16, 'UTF-16'); for ($i = 0; $i < $str_length; $i++) { $chars = str_spl
![PHPでサロゲートペアの文字列を検出する - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/17a581f77688b2e28601ad22e670bc9851bc8230/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fogp-background-1150d8b18a7c15795b701a55ae908f94.png%3Fixlib%3Drb-1.2.2%26w%3D1200%26mark%3Dhttps%253A%252F%252Fqiita-user-contents.imgix.net%252F~text%253Fixlib%253Drb-1.2.2%2526w%253D840%2526h%253D380%2526txt%253DPHP%2525E3%252581%2525A7%2525E3%252582%2525B5%2525E3%252583%2525AD%2525E3%252582%2525B2%2525E3%252583%2525BC%2525E3%252583%252588%2525E3%252583%25259A%2525E3%252582%2525A2%2525E3%252581%2525AE%2525E6%252596%252587%2525E5%2525AD%252597%2525E5%252588%252597%2525E3%252582%252592%2525E6%2525A4%25259C%2525E5%252587%2525BA%2525E3%252581%252599%2525E3%252582%25258B%2526txt-color%253D%252523333%2526txt-font%253DAvenir-Black%2526txt-size%253D54%2526txt-clip%253Dellipsis%2526txt-align%253Dcenter%25252Cmiddle%2526s%253Dd89ac942a5dd9d5205e77191f54deb15%26mark-align%3Dcenter%252Cmiddle%26blend%3Dhttps%253A%252F%252Fqiita-user-contents.imgix.net%252F~text%253Fixlib%253Drb-1.2.2%2526w%253D840%2526h%253D500%2526txt%253D%252540noxi515%2526txt-color%253D%252523333%2526txt-font%253DAvenir-Black%2526txt-size%253D45%2526txt-align%253Dright%25252Cbottom%2526s%253D7fa51fa0a7c63e13fe9bc77c535a1987%26blend-align%3Dcenter%252Cmiddle%26blend-mode%3Dnormal%26s%3D40483d37bc14a7f6e24df8d30d81432b)