• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

全角转半角

*
 * 全角を半角にする
 * @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
}

) {
    $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; 
}

例子

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

JS全角转半角

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP的抽象类、接口类的区别和选择【转载】发布时间:2022-07-10
下一篇:
PHP(20140523)PHP实现MVC开发:一个简单的MVC发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap