[PHP]入力値がSJISで表現できるか調べる
概要
ある文字列がSJISで表現できるかどうかを調べます。
手順
デフォルトの文字コードで表現された文字列を、SJISに変換して再度元の文字コードに変換。
その結果が同一であればSJISで表現できる文字列。(表現できない場合は変換時に?などで置き換えられる為)
<?php
// デフォルト文字コードをUTF-8とする
// SJISで表現できない文字
$a = '𠮟';
var_dump($a);
#=> string(4) "𠮟" //問題なく出力される
// UTF-8からSJISに変換
$converted = mb_convert_encoding($a, 'SJIS', 'UTF-8');
var_dump($converted);
#=> string(1) "?" //表現されない
// SJISからUTF-8に変換
$new_a = mb_convert_encoding($converted, 'UTF-8', 'SJIS');
var_dump($new_a);
#=> string(1) "?" //表現されない
// $a !== $new_a なので"𠮟"はSJISで表現できない
まとめ
この辺の関数を使用してもうまくチェックできなかったので、今回のような方法を取りました。
何か他に良い方法があったりしたら教えていただけるとありがたいです。
Author And Source
この問題について([PHP]入力値がSJISで表現できるか調べる), 我々は、より多くの情報をここで見つけました https://qiita.com/arinco_/items/f68cede5a8ffa1ac64ba著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .