tohokuaikiのチラシの裏

技術的ネタとか。

PHPで制御文字を取り除く

ほかのプログラミング言語はたくさんあったのだけどPHPが無い。

Strip control codes and extended characters from a string - Rosetta Code

こんな感じかな。

<?php
function stripCtrlCode($string)
{
    $ctrl_code = array(
        "00", // NULl(ヌル)
        "01", // Start Of Heading(ヘッダ開始)
        "02", // Start of TeXt(テキスト開始)
        "03", // End of TeXt(テキスト終了)
        "04", // End Of Transmission(転送終了)
        "05", // ENQuiry(問合せ)
        "06", // ACKnowledge(肯定応答)
        "07", // BELl(ベル)
        "08", // Back Space(後退)
        /*    "09", // Horizontal Tabulation(水平タブ) */
        /*    "0A", // Line Feed(改行)*/
        "0B", // Vertical Tabulation(垂直タブ)
        "0C", // Form Feed(改ページ)
        /*    "0D", // Carriage Return(復帰)*/
        "0E", // Shift Out(シフトアウト)
        "0F", // Shift In(シフトイン)
        "10", // Data Link Escape(伝送制御拡張)
        "11", // Device Control 1(装置制御1)
        "12", // Device Control 2(装置制御2)
        "13", // Device Control 3(装置制御3)
        "14", // Device Control 4(装置制御4)
        "15", // Negative AcKnowledge(否定応答)
        "16", // SYNchronous idle(同期信号)
        "17", // End of Transmission Block(転送ブロック終了)
        "18", // CANcel(取消)
        "19", // End of Medium(媒体終端)
        "1A", // SUBstitute(置換)
        "1B", // ESCape(拡張)
        "1C", // File Separator(ファイル分離)
        "1D", // Group Separator(グループ分離)
        "1E", // Record Separator(レコード分離)
        "1F", // Unit Separator(ユニット分離)
        );

    $code_array = array();
    foreach ($ctrl_code as $code){
        $code_array[] = hex2bin($code);
    }

    return str_replace($code_array, "", $string);
}

って作った後に軽くググったら

制御文字を取り除く方法(改行コードは保持) - Qiita

<?php
return preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $string); 

ってあって、なんだか ( ´_ゝ`)って表情になった。