php 半角与全角相关的正则
半角的全部确认,带小初音的确认法则
^[?-????-???? -]+$
<!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>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。