hamacoの日記

どうでもいい日常をたれながす日記だと思う

外字が含まれたテキストから外字のみ抜き出す

諸事情により、外字が使われているシステムから出力されたユーザーデータのCSVを取り込む必要があり、まず使用されている外字のリストを作るために外字を抜き出したのでメモメモ。

<?php

$text = file_get_contents('/path/to/users.csv');
$text = mb_convert_encoding($text, 'UTF-8', 'SJIS-win');

preg_match_all('/\p{Co}/u', $text, $matches);

foreach (array_unique($matches[0]) as $char) {
    echo $char . PHP_EOL;
}

preg関数で Unicode 文字プロパティが使えるので、外字だけ取り出すのめっちゃ簡単にできた。
もちろんMacとかだと外字が入ってなくて全て になるので、Windowsに外字ファイル(EUDC.tte)を入れた状態で見る必要がある。

参考) https://www.php.net/manual/ja/regexp.reference.unicode.php