" , ">" , $s); $s = mb_ereg_replace("\"", """, $s); $s = mb_ereg_replace("'" , "'", $s); $s = mb_ereg_replace("\r", " ", $s); $s = mb_ereg_replace("\n", " ", $s); return $s; } // e_htmlと異なり、xd_html_text()で生成したデータ(連想配列)の場合はエスケープせずに返す。 function e_html_unsafe($s){ if(xd_is_type($s,"html")){ return xd_value($s); } else { return e_html($s); } } // html function e_html($s){ return e_html_0($s,false); } // html preタグ、textareaタグ内でのエスケープ function e_html_pre($s){ return e_html_0($s,true); } // html function e_html_0($s, $pre){ $s = mb_ereg_replace("&" , "&" , $s); $s = mb_ereg_replace("<" , "<" , $s); $s = mb_ereg_replace(">" , ">" , $s); $s = mb_ereg_replace("\"" , """ , $s); $s = mb_ereg_replace("'" , "'" , $s); if(!$pre){ $s = mb_ereg_replace("\n" , "
" , $s); $s = mb_ereg_replace("\r" , "" , $s); } return $s; } //javascriptインジェクション対策 function e_javascr($s){ $s = mb_ereg_replace(" [\\] $s = mb_ereg_replace("\"" , "\\\"" , $s); // ["] -> [\"] $s = mb_ereg_replace("'" , "\\'" , $s); // ['] -> [\'] $s = mb_ereg_replace("\n" , "\\n" , $s); // \n -> [\n] $s = mb_ereg_replace("\r" , "\\r" , $s); // \r -> [\r] $s = mb_ereg_replace("\t" , "\\t" , $s); // \t -> [\t] $s = mb_ereg_replace("<" , "\\x3C" , $s); // [<] -> [\x3C] $s = mb_ereg_replace(">" , "\\x3E" , $s); // [>] -> [\x3E] return $s; } // 数値を表す文字列 function e_num($s){ return "".($s-0); } function e_csv_excel($s){ $s = mb_ereg_replace("," ," ", $s); // [,] -> [ ] $s = mb_ereg_replace("\"" ," ", $s); // ["] -> [ ] return $s; } // 文字列→TSV要素 function e_tsv($s){ $s = mb_ereg_replace("\\\\" ,"\\\\", $s); // [\] -> [\\] $s = mb_ereg_replace("\t" ,"\\t", $s); // [(タブ)] -> [\t] $s = mb_ereg_replace("\n" ,"\\n", $s); // [(改行)] -> [\n] return $s; } // TSV要素→文字列 function e_un_tsv($s){ $s = mb_ereg_replace("\\\\n" ,"\n", $s); // [\n] -> [(改行)] $s = mb_ereg_replace("\\\\t" ,"\t", $s); //[\t] -> [(タブ)] $s = mb_ereg_replace("\\\\\\\\" ,"\\", $s); // [\\] -> [\] return $s; } // 文字列→system_csv要素 function e_system_csv($s){ $s = mb_ereg_replace("\\\\" ,"\\\\", $s); // [\] -> [\\] $s = mb_ereg_replace("," ,"\\c", $s); // [,] -> [\c] $s = mb_ereg_replace("\n" ,"\\n", $s); // [(改行)] -> [\n] return $s; } // system_csv要素→文字列 function e_un_system_csv($s){ $s = mb_ereg_replace("\\\\n" ,"\n", $s); // [\n] -> [(改行)] $s = mb_ereg_replace("\\\\c" ,",", $s); //[\c] -> [,] $s = mb_ereg_replace("\\\\\\\\" ,"\\", $s); // [\\] -> [\] return $s; } /* HTML(改行)→HTML(BRタグ) */ function e_html_br($s){ $s = mb_ereg_replace("\n" ,"
", $s); // [(改行)] -> [
] return $s; } /* HTML(BRタグ)→HTML(改行) */ function e_html_debr($s){ $s = mb_ereg_replace("
" ,"\n", $s); //[
] -> [(改行)] return $s; } //=== xd_* : 拡張データ(連想配列にして文字列に付加情報を加える) ======================================== // htmlテキストを表す連想配列を返す function xd_html_text($s){ return xd_make_data("html", $s); } // function xd_make_data($type, $val){ return array("_xd"=>true, "type"=>$type, "val"=>$val); } // $xdが$typeで指定したタイプならtrue function xd_is_type($xd, $type){ return (xd_is_xd_value($xd) && $xd["type"]==$type); } // $xdから値を取得する function xd_value($xd, $sub="val"){ return xd_is_xd_value($xd) ? $xd[$sub] : null; } // is_null, is_scalar, xd_is_xd_valueのいずれかがtrueを返す場合true。 function xd_is_value($s){ return (is_null($s) || is_scalar($s) || xd_is_xd_value($s)); } // xd_*関数で作られたデータならtrue。 function xd_is_xd_value($s){ // parse_str()ではstring型,null型,array型は作られるが、boolean型は作られない。 // なのでboolean型かどうかをチェックすることで、 // $_POSTなどからの(安全でない)データではないことが保証出来る。 // // (注) 厳密にはarray()で同じ構造は作れるので、parse_str()で作られていないことは保証出来るが、 // xd_*関数で作られたという保証は無い。 // // ユーザーからの入力を「任意の名前のキー」で「boolean型の値」を作成するような // 処理があるとまずいので注意すること。 if(is_array($s) && is_bool($s["_xd"]) && $s["_xd"]==true){ return true; } return false; } ?>