マルチバイト文字列のスペースまたはハイフンを検出したい。
最初に、文字列を文字の配列に分割します
$chrArray = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
次に、それらの記号をハイフンまたはスペースと比較してみます
foreach ($chrArray as $char) {
if ($char == '-' || $char == ' ') {
// Do something
}
}
ああ、これは動作しません。わかりました、なぜですか?たぶん、ASCIIのそれらの記号のためですか?
echo mb_detect_encoding('-'); // ASCII
さて、私はそれを処理しようとします。
$encoding = mb_detect_encoding($str); // UTF-8
$dash = mb_convert_encoding('-', $encoding);
$space = mb_convert_encoding(' ', $encoding);
ああ、でもそれもうまくいきません。一瞬待って...
echo mb_detect_encoding($dash); // ASCII
!!! 何が起こっていますか???どうすればやりたいことができますか?