日文软件常用文字校验(PHP)

 

//-------------------------------------
// 半角・全角文字混入チェック
// 関数名:mixing($str,$mode)
// 引数 :$str 文字列
// $mode 混入チェックするモード
// han:半角文字があるか
// zen:全角文字があるか
// デフォルトはzen
// 戻り値:true あり
// false 無し
// ※引数は必ずSJISにしておくこと
//-------------------------------------

function mixing($str,$mode="zen"){
//最初に特定の文字列を入れる、半角スペースを入れてみる。基本的に文字列の接頭、接後の半角スペースは取り除くので
$str = trim($str); //半角スペースは取っておく
$str = "CheckString ".$str;

//一度EUCに変換
$str = mb_convert_encoding($str,"EUC","SJIS");

$buf = preg_split("/([ -~]+)/",$str, -1,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

//要素数の偶数奇数、どちらが半角か全角かを判別する
$chk_youso = split(" ",$buf[0]);
if(!$chk_youso[1]){
//スペースでスプリットできなければ最初は全角文字
if($mode=="han"){
if(count($buf)>1){
return false;
}
else{
return true;
}
}
if($mode=="zen"){
return true;
}
}
else{
//スペースでスプリットできれば最初は半角文字
if($mode=="han"){
return true;
}
if($mode=="zen"){
if(count($buf)>1){
return false;
}
else{
return true;
}
}
}
}


//-------------------------------------
// 日付チェック
// 関数名:chk_date($str,$null)
// 引数 :$str 日付(入力形式:yyyymmdd)
// 戻り値:true OK
// false NG
// ※半角数字しかチェックしません
//-------------------------------------

function chk_date($str){
if(!$strreturn false;
$y = substr($str,0,4);
$m = substr($str,4,2);
$d = substr($str,6,2);
if(checkdate($m, $d, $y)){
return true;
}
else{
return false;
}
}


//-------------------------------------
// カナかなチェック
// 関数名:chk_kana($str,$mode,$null)
// 引数 :$str 文字列
// $mode どのタイプか
// zk:全角カナ
// hk:半角カナ
// zh:全角ひらがな
// $null NULLチェック
// true :NULLチェックする
// 指定無し:NULLOK
// 戻り値:true OK
// false NG
//-------------------------------------

function chk_kana($str,$mode,$null=false){
if($null && !$strreturn false;
if($mode=="zk" || $mode=="hk" || $mode=="zh"){
if($mode=="zk"){
$kana = array('','','','','','','','','','',
'','','','','','','','','','',
'','','','',"",'','','','','',
'','','','','','','','','','','',
'','','','','','','','','','',
'','','','','','','','','','',
'','','','','','','','','','','',
'','','','','','','','','');
}
if($mode=="hk"){
$kana = array('','','','','','','','','','','','','','','',
'','','','','ソ','','','','','','','','','','','',
'','','','','','','','','','','','','','','','',
'','','','','','','','','','');
}
if($mode=="zh"){
$kana = array('','','','','','','','','','',
'','','','','','','','','','',
'','','','','','','','','','',
'','','','','','','','','','','',
'','','','','','','','','','',
'','','','','','','','','','',
'','','','','','','','','','','',
'','','','','','','','');
}
//消去法
foreach($kana as $read){
$str = str_replace($read,"",$str);
}
if($str==""){
return true;
}
else{
return false;
}
}
else{
return false;
}
}



//-------------------------------------
// メールアドレスチェック
// 関数名:chk_email($str,$null)
// 引数 :$str メールアドレス
// $null NULLチェック
// true :NULLチェックする
// 指定無し:NULLOK
// 戻り値:true OK
// false NG
//-------------------------------------

function chk_email($str,$null=false){
if($null && !$strreturn false;
if(strlen($str)>256return false;
if(!eregi("^([a-z0-9_?]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$",$str)) return false;
return true;
}


//-------------------------------------
// 全角数字→半角数字に変換
// 関数名:zen_2_han_numeric($str)
// 引数 :置換前文字列
// 戻り値:置換後文字列K
// ※あくまで数字しか置換しませんので
//-------------------------------------

function zen_2_han_numeric($str){
$str = str_replace("","0",$str);
$str = str_replace("","1",$str);
$str = str_replace("","2",$str);
$str = str_replace("","3",$str);
$str = str_replace("","4",$str);
$str = str_replace("","5",$str);
$str = str_replace("","6",$str);
$str = str_replace("","7",$str);
$str = str_replace("","8",$str);
$str = str_replace("","9",$str);
return $str;
}


//-------------------------------------
// 数字チェック
// 関数名:chk_numeric($str,$mode,$null)
// 引数 :$str 文字列
// :$mode 1:半角数字
// 2:全角数字
// なし:数字ならどちらでも
// $null NULLチェック
// true :NULLチェックする
// 指定無し:NULLOK
// 戻り値:true OK
// false NG
//-------------------------------------

function chk_numeric($str,$mode=false,$null=false){
if(!$null && !$strreturn true;

if($mode==1){ //半角数字かのチェック
if(!ereg("^[0-9]+$", $str)){
return false;
}
else{
return true;
}
}
elseif($mode==2){ //全角数字かのチェック
//半角文字が混入しているかチェック
//※mixing()は別記事にあります

if(mixing($str,"han")) return false;

//半角に置換します
$str = zen_2_han_numeric($str);
if(!ereg("^[0-9]+$", $str)){
return false;
}
else{
return true;
}
}
else//数字かのチェック
$chk_str = zen_2_han_numeric($str);
if(!ereg("^[0-9]+$", $chk_str)){
return false;
}
else{
return true;
}
}
}


//-------------------------------------
// 文字数チェック
// 関数名:length($str,$max,$min=0,$null)
// 引数 :$str 文字列
// $max 制限文字数MAX
// $min 制限文字数MAX(省略可)
// $null NULLチェック
// true :NULLチェックする
// 指定無し:NULLOK
// 戻り値:true OK
// false NG
// ※バイト数でのチェックしかしません
//-------------------------------------

function chk_length($str,$max,$min=0,$null=false){
if($null && !$str){
return false;
}
if(!$maxreturn false;
if(!ereg("^[0-9]+$", $max)) return false;
if(!ereg("^[0-9]+$", $min)) return false;
if(strlen($str)>$maxreturn false;
if($min>0 && strlen($str)<$minreturn false;
return true;
}


// ディレクトリリスト取得
// 引数 :$path->読み込みディレクトリパス
// 戻り値:ファイル名(配列にて返します)

function Dir_file_list($path){
if(!$pathreturn;
if(!file_exists($path)) return;
$DIR = dir($path);
if(!$DIRreturn;
while(($ent=$DIR->read())!==false){
if($ent!='.' && $ent!='..'){
$list[] = $ent;
}
}
return $list;
}


//--------------------------- メール送信関数
// Mail($from,$to,$subject,$body,$return);
// From, To は、メアドのみを渡す。 "who" はNG
//---------------------------------------------

function Mail($from,$to,$subject,$body,$return){
mb_language(
'Japanese');
mb_internal_encoding(
"SJIS");

// サブジェクトを jis にして、MIME エンコード
$subject = i18n_mime_header_encode($subject);
//$subject = base64_encode($subject);
$subject = i18n_convert($subject, "JIS");

// 本文を jis に
$body = i18n_convert($body, "JIS");

$mp = popen("/usr/sbin/sendmail -f $return $to", "w");
fputs($mp, "Return-path: $returnn");
fputs($mp, "From: $fromn");
fputs($mp, "To: $ton");
fputs($mp, "Subject: $subjectn");
fputs($mp, "Content-Type: text/plain; charset="ISO-2022-JP"n");
fputs($mp, "Content-Transfer-Encoding: 7bitn");
fputs($mp, "n");
fputs($mp, "$bodyn");

pclose($mp);
}

posted on 2006-02-27 09:58 ffan 阅读(836) 评论(1)  编辑 收藏 引用

评论

# re: 日文软件常用文字校验(PHP) 2009-02-01 00:11 胡之恨

这个程序起什么作用?我下载了一个日本程序,想转换成中文,怎么用你写的程序实现快速转换中文,请大哥告知!  回复  更多评论   

只有注册用户登录后才能发表评论。
<2006年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(12)

随笔分类

随笔档案

相册

搜索

最新评论

阅读排行榜

评论排行榜