PHP判断字符串是纯英文、纯汉字或汉英混合

 更新时间:2016年11月25日 17:07  点击:1886
下面是我收藏的一些PHP判断字符串是纯英文、纯汉字或汉英混合 实例,大家可参考。

纯英文

 代码如下 复制代码

if(preg_match("/^[a-z]*$/i",   "fdsFDfd")) 

 echo   "全字母 

 "; 

 } 

纯汉字

 代码如下 复制代码

比如:
var str = "php编程";
if (/^[u4e00-u9fa5]+$/.test(str)) {
alert("该字符串全部是中文");
}
else{
alert("该字符串不全部是中文");
} php中,是用x表示十六进制数据的。于是,变换成如下的代码:
$str = "php编程";
if (preg_match("/^[x4e00-x9fa5]+$/",$str)) {
print("该字符串全部是中文");
} else {
print("该字符串不全部是中文");
}


汉英混合
 
用户名:包括英文小写、汉字、数字、下划线,不能全部是数字,下划线不能在末尾

 代码如下 复制代码

/^[a-z0-9_u4e00-u9fa5]+[^_]$/g utf-8下

preg_match("/^[a-z0-9_x80-xff]+[^_]$/g",$a);gbk下:

preg_match("/^[a-z0-9_".chr(0xa1)."-".chr(0xff)."]+[^_]$/",$a)


utf-8编码

 代码如下 复制代码


<?php
/**
 * PHP判断字符串纯汉字 OR 纯英文 OR 汉英混合
 * 琼台博客
 */
echo '<meta charset="utf-8" />';
function utf8_str($str){
    $mb = mb_strlen($str,'utf-8');
    $st = strlen($str);
    if($st==$mb)
        return '纯英文';
    if($st%$mb==0 && $st%3==0)
        return '纯汉字';
    return '汉英混合';
}
 
$str = '琼台博客';
echo '字符串:<span style="color:red">'.$str.'</span>,是<span style="color:red">'.utf8_str($str).'</span>';
?>

gbk编码

 代码如下 复制代码

function gbk_str($str){
    $mb = mb_strlen($str,'gbk');
    $st = strlen($str);
    if($st==$mb)
        return '纯英文';
    if($st%$mb==0 && $st%2==0)
        return '纯汉字';
    return '汉英混合';
}

数字中文汉字

 代码如下 复制代码

$username=$_REQUEST['username'];
if(!preg_match("/^[a-z0-9xa1-xff]{3,10}$/",$username))
 {
  echo"34r345";
  exit;
 }

在php中判断是否为纯字母我们可直接使用正则/^[a-zA-Z]$/来验证了,包括大小写字母哦,有需要了解的同学可参考参考。

上代码

 代码如下 复制代码

<?php

header('Content-type: text/html; charset=utf-8');

$str = "dasdadsfsadASDSADS";

if (preg_match('/^[a-zA-Z]+$/',$str))
{
 echo $str."是字母";
}
else
{
 echo $str."不是字母";
}

?>

这个就是代码

 代码如下 复制代码
preg_match('/^[a-zA-Z]+$/',$str)

如果是字母则返回TRUE,否则返回FALSE

其它的判断

 代码如下 复制代码

if(preg_match("/^d*$/",   "4312"))
{
echo   "全数字
";
}

if(preg_match("/^[a-z]*$/i",   "fdsFDfd"))
{
echo   "全字母
";
}

if(preg_match("/^[a-zd]*$/i",   "fd4fd34"))
{
echo   "有数字有字母
";
}

在php中empty() isset() is_null()三个函数都是判断是否为空的情况,但是如果我个要具体的深入去了解这个三个函数发现还是有许多的区别,下面我来给大家总结了一下。

is_null(), empty(), isset(),这几个函数以及 == ” , == array() 会在实际操作中经常用到。因为功能很类似,可能会忽视了他们的区别,一不小心就会给工作带来很大的麻烦。下面将这几种结构列出来,供自己和大家参考,鉴于表述的准确性,部分解释来自英文原版手册,避免中文手册的更新不及时以及翻译不当等问题。

is_null()
is_null(),bool,当参数满足 null 的三种情况时, is_null() 将返回 TRUE。

null类型,以下情况将被认定为 NULL:

it has been assigned the constant NULL.

it has not been set to any value yet.

it has been unset().

source:http://cn2.php.net/manual/en/language.types.null.php

isset()
isset(),bool,用于判定参数是否被设定并且不是 NULL。参数只能是变量。

如果没有设置变量,或者变量被 unset() 掉,或者变量值为 NULL ,返回 FALSE,其它情况返回 TRUE。即如果不是 NULL 就属于 isset 的范畴了,这一点和 is_null() 函数正好相反。

如果传递多个参数,将取交集。即所有参数全部符合 isset() 时才返回 TRUE。

ps:defined(),bool,用于检查常量是否被设置。

source:http://cn2.php.net/manual/en/function.isset.php

empty()
empty(),bool, 主要用于判断变量是否为空。参数只能是变量。

如下情况将被判定位空:

 代码如下 复制代码

“” (an empty string)

0 (0 as an integer)

0.0 (0 as a float)

“0″ (0 as a string)

NULL

FALSE

array() (an empty array)

var $var; (a variable declared, but without a value in a class)

注:如果参数是未设置的变量,变量将被认定为 NULL,不会报错,返回 TRUE。

但是注意在 5.0.0 之后,Objects with no properties are no longer considered empty.

source:http://cn2.php.net/manual/en/function.empty.php

判定是否为空的方式还有 == ”,== array() 等,比较有局限性,都没什么好说的。

测试的类型如下:

 

 代码如下 复制代码

<?php
$a;
$b = false;
$c = '';
$d = 0;
$e = null;
$f = array();

?>

empty()

首先是empty的var_dump输出:


:
<?php
var_dump(empty($a));
var_dump(empty($b));
var_dump(empty($c));
var_dump(empty($d));
var_dump(empty($e));
var_dump(empty($f));
?>

程序输出为:
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)

从代码中可以看出,只要数据类型是否为空或假,empty()就输出true。
isset()

再看看isset的输出:
var_dump(isset($a));
var_dump(isset($b));
var_dump(isset($c));
var_dump(isset($d));
var_dump(isset($e));
var_dump(isset($f));

// 输出
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)

可以看出isset()只能用来判断是否为NULL和未定义。
is_null()

最后是is_null的输出:
var_dump(is_null($a));
var_dump(is_null($b));
var_dump(is_null($c));
var_dump(is_null($d));
var_dump(is_null($e));
var_dump(is_null($f));

// 输出
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
bool(false)

is_null 字面意思了。

由此可见 empty() 可以用来判定所有的数据类型是否为空或假,而 is_null 与 isset 基本一样,只能用来判断是否为NULL和未定义。

概括总结isset,empty,is_null区别:

刚才介绍的:检查变量,以及参数类型,这个是这3个函数不同之处的基础,也是最容易被忽视的。看到网上有很多对这个3个函数进行比较文章。很少涉及这些。下面我要说的,是在都检查已存在变量情况下,不同之处。

 代码如下 复制代码

<?php

$a=100;

$b="";

$c=null;

//isset检查

echo "isset","$a=$a",isset($a)?"define":"undefine","rn";

echo "isset","$b=$b",isset($b)?"define":"undefine","rn";

echo "isset","$c=$c",isset($c)?"define":"undefine","rn";

unset($b);

echo "isset","$b",isset($b)?"define":"undefine","rn";

$b=0;

echo "rnrn";

 

//empty检查

echo "empty","$a=$a",!empty($a)?"no empty":"empty","rn";

echo "empty","$b=$b",!empty($b)?"no empty":"empty","rn";

echo "empty","$c=$c",!empty($c)?"no empty":"empty","rn";

unset($b);

echo "empty","$b",!empty($b)?"no empty":"empty","rn";

$b=0;

echo "rnrn";

 

//is_null检查

echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn";

echo "is_null","$b=$b",!is_null($b)?"no null":"null","rn";

echo "is_null","$c=$c",!is_null($c)?"no null":"null","rn";

unset($b);

echo "is_null","$b",is_null($b)?"no null":"null","rn";

昨天开发一个产品要求由网站总后台生成一个注册码/序列号,然后我们以573-225-374-118这种格式生成,并且不重复在数据库是唯一的,下面我把我找到的与自己写的都记录一下。

原理,就是生成mt_rand随机种子来生成,然后利用相关函数进行读取操作

例1

 代码如下 复制代码

/**
 * 序列号生成器
 */
function snMaker($pre = '') {
 $date = date('Ymd');
 $rand = rand(1000000,9999999);
 $time = mb_substr(time(), 5, 5, 'utf-8');
 $serialNumber = $pre.$date.$time.$rand;
// echo strlen($serialNumber).'<br />';
 return $serialNumber;
}
echo snMaker();

/**
 * 将一个字符串的一部分替换成某一特定字符
 * @param str or int $str 需要处理的字符串
 * @param str or int $to 将替换成什么字符串
 * @param int $start 保留前几个字符
 * @param int $end 保留后几个字符
 */
function hideString($str = 'hello', $to = '*', $start = 1, $end = 0) {
 $lenth = strlen($str) - $start - $end;
 $lenth = ($lenth < 0) ? 0 : $lenth;
 $to = str_repeat($to, $lenth);
 $str = substr_replace($str, $to, $start, $lenth);
 return $str;
}

echo hideString();


例2 生成注册码/序列号

以下为引用的内容:

 代码如下 复制代码

<?php

 /* 配置 */
 $key_sum = 1500;    //CD-Key最大数量,防止重复值
 $key_total = 1000;    //最终需要的CD-Key数量
 $limiter = "-";    //CD-Key每组数字之间的连接符
 $save_file = "./cd_key.txt"; //保存CD-Key文件
 $num_file = "./number.txt"; //序列数字文件
 $file = file($num_file);  //打开序列数文件
 $start_num = 0;    //最小随机数
 $end_num = count($file);  //最大随机数

 /* 生成随机数字串 */
 $cdkey = array();
 for ($i=0; $i<$key_sum; $i++)
 {
     $key_str = $file[rand_num($start_num, $end_num)].$limiter.
                         $file[rand_num($start_num, $end_num)].$limiter.
                         $file[rand_num($start_num, $end_num)].$limiter.
                         $file[rand_num($start_num, $end_num)];
      $cdkey[] = str_replace("rn", "", $key_str);
 }

 /* 过滤重复串并且提取最终需要的CD-Key数量 */
 $cdkey = array_unique($cdkey);
 $key_result = array();
 for ($i=0; $i<$key_total; $i++)
 {
     $key_result[] = $cdkey[$i];
 }

 /* 把最终的CD-Key写入文件 */
 $fp = fopen($save_file, "w+") or die("Open $save_file failed");
 fwrite($fp, implode("rn", $key_result)) or die("Write $save_file failed");
 unset($cdkey);
 unset($$key_result);
 fclose($fp);

 echo "Create $key_total key succeed!";

 /* 随机函数 */
 function rand_num($start, $end)
 {
     return mt_rand($start, $end);
 }

?>

 


执行上面的程序就会生成cd_key.txt文件,里面包含了类似下面的验证码:


以下为引用的内容:

573-225-374-118
691-553-280-280
969-594-607-211
251-575-776-563
280-289-739-533...


这样,就完整的达到了我们的目的,你也可以把以上随机串保存到数据库里,方便调用。灵活设置以上变量,你能够生成16位、20位的验证码。如果你有兴趣,也可以写类似 XDF8F-ADE89-D0J5C-4RTFG之类的验证码

在php中拆分字符串我们会用到explode或者split函数,如果我们要组合字符串就可以使用implode或使用.号直接连接了

字符组合

 代码如下 复制代码

for($k=2;$k<5;$k++)
{
 if(!empty(${'pfile'.$k}))
 { echo ${'pfile'.$k};}//那么相当于输出的是$pfile2,$pfile3.......}
}

implode() 函数把数组元素组合为一个字符串。

注释:implode() 可以接收两种参数顺序。但是由于历史原因,explode() 是不行的。你必须保证 separator 参数在 string 参数之前才行。

例子

 代码如下 复制代码
<?php
$arr = array('Hello','World!','Beautiful','Day!');
echo implode(" ",$arr);
?>

输出:

Hello World! Beautiful Day!

explode() 函数把字符串分割为数组。


注释:参数 limit 是在 PHP 4.0.1 中加入的。

注释:由于历史原因,虽然 implode() 可以接收两种参数顺序,但是 explode() 不行。你必须保证 separator参数在 string 参数之前才行。

例子在本例中,我们将把字符串分割为数组:

 代码如下 复制代码

<?php
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?>

输出:

Array
(
[0] => Hello
[1] => world.
[2] => It's
[3] => a
[4] => beautiful
[5] => day.
)

一个不错的php分割合并两个字符串的函数

 代码如下 复制代码

/**
 * Merges two strings in a way that a pattern like ABABAB will be
 * the result.
 *
 * @param     string    $str1   String A
 * @param     string    $str2   String B
 * @return    string    Merged string
 */ 
function MergeBetween($str1, $str2){
 
    // Split both strings
    $str1 = str_split($str1, 1);
    $str2 = str_split($str2, 1);
 
    // Swap variables if string 1 is larger than string 2
    if (count($str1) >= count($str2))
        list($str1, $str2) = array($str2, $str1);
 
    // Append the shorter string to the longer string
    for($x=0; $x < count($str1); $x++)
        $str2[$x] .= $str1[$x];
 
    return implode('', $str2);
}


//范例演示:
print MergeBetween('abcdef', '__') . "n";
print MergeBetween('__', 'abcdef') . "n";
print MergeBetween('bb', 'aa') . "n";
print MergeBetween('aa', 'bb') . "n";
print MergeBetween('a', 'b') . "n";
 
/*
Output:
 
a_b_cdef
a_b_cdef
baba
abab
ab
*/

[!--infotagslink--]

相关文章

  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 一个奇葩的最短的 IE 版本判断JS脚本

    使用 conditional comment 来判断 IE 的版本。嗯,是早早有人提出,但没有认真看代码。昨天刚好在看 CSS3 PIE 的时候看到,觉得是不是不靠谱。今天看到 Paul Irish 也提起,那么,推荐一下吧。这是作者博客上写的:复制代码 代码...2014-05-31
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • c# 判断是否为空然后赋值的4种实现方法

    下面小编就为大家分享一篇c# 判断是否为空然后赋值的4种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • php 中英文混合字符串截取

    文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
  • MySql存储过程之逻辑判断和条件控制

    具体详情请看下文小编给大家带来的知识点。同编写程序类似,存储过程中也有对应的条件判断,功能类似于if、switch。在MySql里面对应的是IF和CASE1、IF判断IF判断的格式是这样的:IF expression THEN commands [ELSEIF ex...2015-10-21
  • PHP中empty和isset对于参数结构的判断及empty()和isset()的区别

    废话不多说了,直接给大家贴代码了。<&#63;php class test{} $a1 = null; $a2 = ""; //$a3 = $a4 = 0; $a5 = '0'; $a6 = false; $a7 = array(); //var $a8; $a9 = new test(); for ($i=1; $i <=9 ; $i++) {...2015-11-24
  • C#实现对字符串进行大小写切换的方法

    这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07