【PHP】日文全角转半角半角判断

本文介绍了一种用于将全角字符转换为半角字符的PHP函数,并提供了一个判断字符串是否全部为半角字符的方法。该函数可以处理包括全角数字、字母、长音符号及假名在内的多种字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全角转半角
ContractedBlock.gif ExpandedBlockStart.gif Code
/**
 * 全角を半角にする
 * @param    string $instr 変換前文字列
 * @return    string 変換後文字列
*/
function zen2han($instr) {
    
$flag = FALSE;            //直前文字が全角カタカナならTRUE
    $len = mb_strlen($instr);
    
$ofst = 1;
    
$outstr = '';

    
for ($ofst = 0$ofst < $len$ofst++) {
        
$ch = mb_substr($instr, $ofst, 1);
        
if ($ch == '') {
            
if ($flag)    $outstr .= '';                    //カタカナの長音記号
            else        $outstr .= $ch;
        } 
else if (mb_ereg_match('[ァ-ヶ]+', $ch)) {    //カタカナの範囲
            $outstr .= mb_convert_kana($ch, 'k');
            
$flag = TRUE;
        } 
else if (mb_ereg_match('[0-9]+', $ch)) {    //全角数字の範囲
            $outstr .= mb_convert_kana($ch, 'n');
            
$flag = TRUE;
        } 
else if (mb_ereg_match('[A-Z]+', $ch)) {    //全角英字の範囲
            $outstr .= mb_convert_kana($ch, 'r');
            
$flag = TRUE;
        } 
else if (mb_ereg_match('[ぁ-ん]+', $ch)) {    //ひらがなの範囲
            $flag = TRUE;
            
$outstr .= mb_convert_kana($ch, 'h');
        } 
else {
            
$outstr .= $ch;
            
$flag = FALSE;
        }
    }
    
return $outstr;
}

 

半角判断
/**
 * 引数の文字列が全て半角文字であるかチェックする
*/
function is_half($instr) {
    
$flag = FALSE;            //直前文字が全角カタカナならTRUE
    $len = mb_strlen($instr);
    
$ofst = 1;
    
$outstr = '';

    
for ($ofst = 0$ofst < $len$ofst++) {
        
$ch = mb_substr($instr, $ofst, 1);
        
if (mb_ereg('^[ア-ン゙゚ヲー]+$', $ch)) {
            
$flag = TRUE;
        } 
else if (mb_ereg('^[a-zA-Z0-9]+$', $ch)) {
            
$flag = TRUE;
        } 
else {
            
$flag = false;
        }
        
if($flag == falsebreak;
    }
    
return $flag
}
ContractedBlock.gif ExpandedBlockStart.gif Code
function is_half($instr) {
    
$flag = FALSE;            //直前文字が全角カタカナならTRUE
    $len = mb_strlen($instr);
    
$ofst = 1;
    
$symbol = '\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\{\|\}\~';

    for ($ofst = 0; $ofst < $len; $ofst++) {
        $ch = mb_substr($instr, $ofst, 1);
        if (mb_ereg(
'^[ア-ン゙゚ヲー]+$', $ch)) {
            $flag = TRUE;
        } else if (mb_ereg(
'^[a-zA-Z0-9]+$', $ch)) {
            $flag = TRUE;
        } else if (inStr($ch, $symbol)) {
            $flag = TRUE;
        } else {
            $flag = false;
        }
        if($flag == false) break;
    }
    return $flag; 
}

例子

http://files.cnblogs.com/sekihin/convert_kana.rar

JS全角转半角

http://files.cnblogs.com/sekihin/convertKana.rar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值