当前位置: 首页 > news >正文

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

全角转半角

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

相关文章:

  • 硬盘知识
  • 医药公司网站建设方案
  • 工作需要,了解了下HSRP.
  • 【转】华为Java笔试题
  • 2008年7月51CTO.com十大热点文章排行榜
  • Asp.net中防止用户多次登录的方法
  • WinInet学习笔记(一)WinInet简介
  • java解析芯片
  • Googlebot(谷歌机器人)深入了解
  • 长尾理论
  • 备份和还原Windows Server 2008只读域控制器(4)
  • 老板性格决定公司文化
  • .net知识和学习方法系列(二十一)CLR-枚举
  • 小白三下杭州
  • Backup Exec 12.5 功能增强
  • 【译】JS基础算法脚本:字符串结尾
  • 收藏网友的 源程序下载网
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android框架之Volley
  • Cookie 在前端中的实践
  • GraphQL学习过程应该是这样的
  • IP路由与转发
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Logstash 参考指南(目录)
  • Terraform入门 - 3. 变更基础设施
  • 测试开发系类之接口自动化测试
  • 扑朔迷离的属性和特性【彻底弄清】
  • 如何合理的规划jvm性能调优
  • 实现简单的正则表达式引擎
  • 探索 JS 中的模块化
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 正则学习笔记
  • HanLP分词命名实体提取详解
  • RDS-Mysql 物理备份恢复到本地数据库上
  • Semaphore
  • ​一些不规范的GTID使用场景
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #### go map 底层结构 ####
  • (09)Hive——CTE 公共表达式
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)STM32单片机上位机
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (层次遍历)104. 二叉树的最大深度
  • (三)elasticsearch 源码之启动流程分析
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转载)PyTorch代码规范最佳实践和样式指南
  • ***检测工具之RKHunter AIDE
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /proc/stat文件详解(翻译)
  • [ C++ ] STL---stack与queue
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [1181]linux两台服务器之间传输文件和文件夹