您的位置:首页 > 编程语言 > PHP开发

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: