現在リニューアル中 → 旧サイトはこちら

テキストのHTML変換

テキスト文をHTMLに安全に出力できるように成型します。
DBやファイルから入力したデータをHTMLに出力する時などに使用します。
(1)HTMLタグの無効化(&"<>)
(2)スペースの変換(半角スペース → &nbsp;)
(3)タブの変換(\t → &nbsp;&nbsp;&nbsp;&nbsp;)
(4)改行コードの変換(\r\n,\r,\n → <br>)

function disp_html($text) { //HTMLタグの無効化 $text = htmlspecialchars($text); //スペースの変換 $text = ereg_replace(" ", "&nbsp;", $text); //タブの変換 $text = ereg_replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;", $text); //改行コードの変換 $text = nl2br($text); return $text; }

伏字

電話番号

電話番号の数字部分を伏字。

$string_from = "電話番号:0123-456-7890"; $string1 = "[0-9]"; $string2 = "*"; $string_to = ereg_replace($string1, $string2, $string_from);

カード番号

クレジットカード番号の上位桁を伏字にして、下4桁のみ出力

$string_from = "電話番号:0123-456-7890"; $string1 = "/[0-9]/"; $string2 = "*"; $string_to = preg_replace($string1, $string2, $string_from);

桁揃え

口座番号など、出力桁が固定の場合に数値を右詰で出力。

$from = "12345"; $to = str_pad($from, 9, "*", STR_PAD_LEFT);

パスワード生成

乱数を使って8文字のパスワードを生成。
1(数字)とl(小文字のエル)、0(数字)とo(小文字のオー)を除く。

function pass_gen() { srand(time()); $passchars = "23456789abcdefghijkmnprstuvwxyz"; $len = strlen($passchars); $pass = ""; for ($i=0; $i<8; $i++) { $pass .= substr($passchars, rand(0, $len-1) ,1); } return $pass; }

SJIS波ダッシュ対応

mb_convert_encodingでEUC→SJISに変換した時、何故か「~」が「~」になってしまうため、力技で変換。

$euc_str = "11:00~12:00"; $jis_str = mb_convert_encoding($euc_str,"SJIS","EUC-JP"); $tmp_bin = preg_replace("/7e/", "8160", bin2hex($jis_str)); $str = pack("H*", $tmp_bin);

波ダッシュの文字コードはエディタに依存することを確認(EUCの場合)。

秀丸、Terapad  :  a1c1
Eclipse、Netbeans  :  8fa2b7

そのため、秀丸、Terapadで入力した「~」はSJIS変換では正しく「8160」となりますが
Eclipse、Netbeansでは「7e」となってしまい、mb_convert_encodingで半角チルダ「~」に変換されてしまいます。
pack("H*", "A1C1")のように、文字コードを直接入力した方が確実です。
(例)$time = "11:00" . pack("H*", "A1C1") . "12:00";
mb_convert_encoding($time,"SJIS","EUC-JP"); の結果はどのエディタで編集しても 「11:00~12:00」のように正しく変換されます。
※この事例はあくまでもファイルがEUCの場合で、UTF-8の場合は、どのエディタでも「efbd9e」になります。
EUC→SJISの場合は、エディタに要注意ということですね。
参考URL http://blog.rodoku.net/article/28326088.html