php 半角与全角相关的正则
2014-08-27 10:32
609 查看
半角的全部确认,带小初音的确认法则
^[ア-ン゙゚ァ-ョッヲー -]+$
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE> convert_kana </TITLE>
</HEAD>
<BODY>
<?php
/**
* 全角を半角にする
* @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 $outmb_ereg_matchstr .= $ch;
} else if (('[ァ-ヶ]+', $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 == false) break;
}
return $flag;
}
mb_internal_encoding('EUC-JP');
//$str = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん";
$str = "日本02Ab56asbaあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん";
print $str . "<br />";
// 全角カタカナを半角にする
$str = zen2han($str);
print $str . "<br />";
if(is_half($str) == true) {
print "ok";
} else {
print "error";
}
?>
</BODY>
</HTML>
^[ア-ン゙゚ァ-ョッヲー -]+$
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE> convert_kana </TITLE>
</HEAD>
<BODY>
<?php
/**
* 全角を半角にする
* @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 $outmb_ereg_matchstr .= $ch;
} else if (('[ァ-ヶ]+', $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 == false) break;
}
return $flag;
}
mb_internal_encoding('EUC-JP');
//$str = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん";
$str = "日本02Ab56asbaあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん";
print $str . "<br />";
// 全角カタカナを半角にする
$str = zen2han($str);
print $str . "<br />";
if(is_half($str) == true) {
print "ok";
} else {
print "error";
}
?>
</BODY>
</HTML>
相关文章推荐
- php字符串处理之全角半角转换(正则匹配全角字符思路)
- php代码把全角数字转为半角数字
- 【PHP】日文全角转半角半角判断
- 全角半角相关转换
- C#正则表达式——中文/英文空格(全角/半角空格)处理
- PHP中用正则表达式实现类似trim的功能(包括去除全角空格)
- 全角/半角的判别by正则表达式
- PHP相关系列 - 正则表达式表格
- PHP全角标点转为半角
- PHP中Perl兼容类型的正则表达式相关函数总结
- 正则替换字符串的全角、半角标点符号
- 正则替换字符串的全角、半角标点符号
- PHP 中将全角字符转换成半角的方法
- Java正则表达式 : 将字符串两边的空格(包括全角和半角)去掉,字符串内部的空格不能去】
- php 全角转半角
- php代码把全角数字转为半角数字
- 双字节全角字符相关正则表达式
- PHP将全角空格转成半角, 并去除头尾空格
- C# 正则表达式 —— 中文/英文空格(全角/半角空格)处理
- php 全角空格转半角空格(全角ひらがなを半角カタカナに変換)