LoginSignup
0

More than 1 year has passed since last update.

機種依存文字を置換 PHP

Posted at
<?php

namespace App\Libs;

/**
 * 文字コード
 */
class CharacterEncoding
{

    /**
     * 機種依存文字を文字化けしない文字に変換
     *
     * @param string $str
     * @return string
     */
    public function replaceMachineChar(string $str): string
    {
        // 現在の文字コードを取得
        $_encode = mb_detect_encoding($str);

        // SJIS-winに変換
        if ($_encode != "SJIS-win") {
            mb_convert_encoding($str, "SJIS-win", $_encode);
        }

        $search = array(
            'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ', 'Ⅹ',
            'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ', 'ⅶ', 'ⅷ', 'ⅸ', 'ⅹ',
            '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩',
            '⑪', '⑫', '⑬', '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳',
            '№', '㈲', '㈱', '㈹',
            '㊤', '㊦', '㊥', '㊧', '㊨',
            '髙', '﨑', '彅', '塚', '增', '寬', '敎', '晴', '朗', '﨔', '橫', '德', '瀨',
            '淸', '瀨', '凞', '猪', '益', '礼', '神', '祥', '福', '靖', '精', '濵', '琦', '昻',
            '緖', '羽', '薰', '諸', '賴', '逸', '郞', '都', '鄕', '閒', '隆', '靑', '飯', '飼', '館',
            '鶴', '黑',
            '㍉', '㌔', '㌢', '㍍', '㌘', '㌧', '㌃', '㌶', '㍑',
            '㍗', '㌍', '㌦', '㌣', '㌫', '㍊', '㌻',
            '㎜', '㎝', '㎞', '㎏', '㏄', '㎡',
            '㍻', '〝', '〟', '℡', '㍾', '㍽', '㍼', '㏍'
        );

        $replace = array(
            'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X',
            'i', 'ii', 'iii', 'vi', 'v', 'vi', 'vii', 'viii', 'ix', 'x',
            '(1)', '(2)', '(3)', '(4)', '(5)', '(6)', '(7)', '(8)', '(9)', '(10)',
            '(11)', '(12)', '(13)', '(14)', '(15)', '(16)', '(17)', '(18)', '(19)', '(20)',
            'No.', '(有)', '(株)', '(代)',
            '(上)', '(下)', '(中)', '(左)', '(右)',
            '高', '崎', 'なぎ', '塚', '増', '寛', '教', '晴', '朗', '欅', '横', '徳', '瀬',
            '清', '瀬', '煕', '猪', '益', '礼', '神', '祥', '福', '靖', '精', '濱', '埼', '昂',
            '緒', '羽', '薫', '諸', '頼', '逸', '郎', '都', '郷', '間', '隆', '青', '飯', '飼', '館',
            '鶴', '黒',
            'ミリ', 'キロ', 'センチ', 'メートル', 'グラム', 'トン', 'アール', 'ヘクタール', 'リットル',
            'ワット', 'カロリー', 'ドル', 'セント', 'パーセント', 'ミリバール', 'ページ',
            'mm', 'cm', 'km', 'kg', 'cc', '平方メートル',
            '平成', '"', '"', 'TEL', '明治', '大正', '昭和', 'K.K.'
        );

        $result = str_replace($search, $replace, $str);
        // 半角カナを全角カナ 全角英字を半角英字
        // $result = mb_convert_kana($result, "KV");

        // 機種依存文字を変換
        // $ret = str_replace($search, $replace, $str);
        // UTF-8に変換
        // $result = mb_convert_encoding($ret, 'UTF-8', "SJIS-win");

        return $result;
    }
}

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0