本文目录一览:
- 1、php有没有检测输入的字符串是什么语言种类的方法
- 2、用PHP正则判断 只能输入 中文、韩文、日文、英文(大小写) 除外的一律禁止的。 有谁可以么?
- 3、用PHP正则判断 只能输入 中文、韩文、日文、因为(大小写) 除外的一律禁止的。 有谁可以么?
- 4、php 中文和编码判断代码
- 5、php中如何判断中英文字符
php有没有检测输入的字符串是什么语言种类的方法
那个你可以粗略根据编码格式来:
?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4); //只取前4位,这样只判断最优先的语言。如果取前5位,可能出现en,zh的情况,影响判断。
if (preg_match("/zh-c/i", $lang))
echo "简体中文";
else if (preg_match("/zh/i", $lang))
echo "繁体中文";
else if (preg_match("/en/i", $lang))
echo "English";
else if (preg_match("/fr/i", $lang))
echo "French";
else if (preg_match("/de/i", $lang))
echo "German";
else if (preg_match("/jp/i", $lang))
echo "Japanese";
else if (preg_match("/ko/i", $lang))
echo "Korean";
else if (preg_match("/es/i", $lang))
echo "Spanish";
else if (preg_match("/sv/i", $lang))
echo "Swedish";
else echo $_SERVER["HTTP_ACCEPT_LANGUAGE"];
?
用PHP正则判断 只能输入 中文、韩文、日文、英文(大小写) 除外的一律禁止的。 有谁可以么?
可以用两个表达式来实现
首先匹配到特殊字符 如 ~!@#$%^*()则返回失败,
如果匹配不到特殊字符 然后再排除数字 用 '/([^\d]+)/'匹配
如果再成功 才算成功 不然你说的那么多种字符UTF-8编码会很难写 而且效率也很差
用PHP正则判断 只能输入 中文、韩文、日文、因为(大小写) 除外的一律禁止的。 有谁可以么?
/^[\x{4e00}-\x{9fa5}\x{3130}-\x{318F}\x{0800}-\x{4e00}a-zA-Z]+$/u
别忘了最后那个修正符“ u ”,少了它可不行。
再补充下,要使用这个正则,你的网页编码必须是UTF-8,如果是GB2312,那不要想了。
php 中文和编码判断代码
编码范围1.
GBK
(GB2312/GB18030)
\x00-\xff
GBK双字节编码范围
\x20-\x7f
ASCII
\xa1-\xff
中文
\x80-\xff
中文
2.
UTF-8
(Unicode)
\u4e00-\u9fa5
(中文)
\x3130-\x318F
(韩文
\xAC00-\xD7A3
(韩文)
\u0800-\u4e00
(日文)
ps:
韩文是大于[\u9fa5]的字符
正则例子:
preg_replace(”/([\x80-\xff])/”,”",$str);
preg_replace(”/([u4e00-u9fa5])/”,”",$str);
二、代码例子
复制代码
代码如下:
//判断内容里有没有中文-GBK
(PHP)
function
check_is_chinese($s){
return
preg_match('/[\x80-\xff]./',
$s);
}
//获取字符串长度-GBK
(PHP)
function
gb_strlen($str){
$count
=
0;
for($i=0;
$istrlen($str);
$i++){
$s
=
substr($str,
$i,
1);
if
(preg_match("/[\x80-\xff]/",
$s))
++$i;
++$count;
}
return
$count;
}
//截取字符串字串-GBK
(PHP)
function
gb_substr($str,
$len){
$count
=
0;
for($i=0;
$istrlen($str);
$i++){
if($count
==
$len)
break;
if(preg_match("/[\x80-\xff]/",
substr($str,
$i,
1)))
++$i;
++$count;
}
return
substr($str,
0,
$i);
}
//统计字符串长度-UTF8
(PHP)
function
utf8_strlen($str)
{
$count
=
0;
for($i
=
0;
$i
strlen($str);
$i++){
$value
=
ord($str[$i]);
if($value
127)
{
$count++;
if($value
=
192
$value
=
223)
$i++;
elseif($value
=
224
$value
=
239)
$i
=
$i
+
2;
elseif($value
=
240
$value
=
247)
$i
=
$i
+
3;
else
die('Not
a
UTF-8
compatible
string');
}
$count++;
}
return
$count;
}
//截取字符串-UTF8(PHP)
function
utf8_substr($str,$position,$length){
$start_position
=
strlen($str);
$start_byte
=
0;
$end_position
=
strlen($str);
$count
=
0;
for($i
=
0;
$i
strlen($str);
$i++){
if($count
=
$position
$start_position
$i){
$start_position
=
$i;
$start_byte
=
$count;
}
if(($count-$start_byte)=$length)
{
$end_position
=
$i;
break;
}
$value
=
ord($str[$i]);
if($value
127){
$count++;
if($value
=
192
$value
=
223)
$i++;
elseif($value
=
224
$value
=
239)
$i
=
$i
+
2;
elseif($value
=
240
$value
=
247)
$i
=
$i
+
3;
else
die('Not
a
UTF-8
compatible
string');
}
$count++;
}
return(substr($str,$start_position,$end_position-$start_position));
}
//判断是否是有韩文-UTF-8
(JavaScript)
function
checkKoreaChar(str)
{
for(i=0;
istr.length;
i++)
{
if(((str.charCodeAt(i)
0x3130
str.charCodeAt(i)
0x318F)
||
(str.charCodeAt(i)
=
0xAC00
str.charCodeAt(i)
=
0xD7A3)))
{
return
true;
}
}
return
false;
}
//判断是否有中文字符-GBK
(JavaScript)
function
check_chinese_char(s){
return
(s.length
!=
s.replace(/[^\x00-\xff]/g,"**").length);
}
php中如何判断中英文字符
PHP判断中英文的依据是字符的ASII值,而字符的ASII值也因编码不同而不同。为了能编写判断中英文字符的php程序,我们必须先来了解下各编码下中文英文字符的ASII值范围:
1.
GBK
(GB2312/GB18030)
x00-xff
GBK双字节编码范围
x20-x7f
ASCII
xa1-xff
中文
gb2312
x80-xff
中文
gbk
2.
UTF-8
(Unicode)
u4e00-u9fa5
(中文)
x3130-x318F
(韩文
xAC00-xD7A3
(韩文)
u0800-u4e00
(日文)
!DOCTYPE HTML PUBLIC
"-//W3C//DTD
HTML
4.0
Transitional//EN"
HTML
HEAD
TITLE
New
Document
/TITLE
META
http-equiv="Content-Type"
content="text/html;
charset=utf-8"
/HEAD
BODY
?
$str
=
"中文";
echo
$str;
echo
"hr";
//if
(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",
$str))
{
//只能在GB2312情况下使用
if
(preg_match("/^[x7f-xff]+$/",
$str))
{
//兼容gb2312,utf-8
echo
"正确输入";
}
else
{
echo
"错误输入";
}
?
/BODY
/HTML