php根据身份证号码计算年龄

 更新时间:2016年11月25日 17:06  点击:2398
我们只要知道身份证的生成规则就可以了,像下面我们从指定位置到多少位就是出日期了,然后我们把日期转成时间戳然后进行加减运算就得出了年龄了,下面我们看实例。
 代码如下 复制代码

<?php
function getAgeByID($id){
       
//过了这年的生日才算多了1周岁
        if(empty($id)) return '';
        $date=strtotime(substr($id,6,8));
//获得出生年月日的时间戳
        $today=strtotime('today');
//获得今日的时间戳
        $diff=floor(($today-$date)/86400/365);
//得到两个日期相差的大体年数
       
//strtotime加上这个年数后得到那日的时间戳后与今日的时间戳相比
        $age=strtotime(substr($id,6,8).' +'.$diff.'years')>$today?($diff+1):$diff;
 
        return $age;
    }
?>
今天没事来研究了一下在php中利用strlen计算字符串长度的一些实例了,但经过测试使用php自带的函数strlen在uft8与gbk编码时有很大的区别,下面我们一起来看看具体测试实例。


今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数。

 代码如下 复制代码


$str = 'Hello world!中';
echo strlen($str); // 输出12

测试一下中文

 代码如下 复制代码

$str = '你好,世界!';
echo strlen($str); // GBK或GB2312下输出12,UTF-8下输出18 www.111cn.net

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得 到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在 UTF-8编码下,一个汉字占3个字节)。

 

下面这个实例摘自大名鼎鼎的WordPress,非常精确的哦,另外需要注意的是本函数仅适用于utf-8 编码下的字符串。

 代码如下 复制代码


function utf8_strlen($string=null){
    // 将字符串分解为单元
    preg_match_all("/./us", $string, $match);
    // 返回单元个数  
    return count($match[0]);
}


但以上代码在UTF-8编码下并不能处理GBK/GB2312的中文字符串,因为GBK/GB2312的中文字符会被识别为两个字符而计算出来的中文字符数量会翻倍,于是我想到了这么一个办法:

 代码如下 复制代码

    $tmp = @iconv('gbk', 'utf-8', $str);
    if(!empty($tmp)){
    $str = $tmp;
    }
    preg_match_all('/./us', $str, $match);
    echo count($match[0]);

可兼容GBK/GB2312及UTF-8编码,经小量数据测试通过,但暂未确定是否完全正确

 

如果让你大家操作数据库替换内容非常的简单,但是txt文件要如何操作呢,下面我来给大家分享了个替换实例。
 代码如下 复制代码

$file_path = '123.txt';
$content = file_get_contents($file_path);
//按换行符把全部内容分隔成数组
$con_array = explode("n", $content);
//替换掉指定行
    
$con_array[12]="123";
//组合回字符串
$con = implode("n", $con_array);
    
//写回文档
file_put_contents($file_path, $con);

在php中随机数据我们利用rand()或者mt_rand()来生成,要获取数组随机元素我们只要把rand(0,arr.length)这样,意思是起始为0,最大为数组长度即可。

昨天帮客户修改完侧边栏,以为终于可以透一口气了,结果临下班的时候,他居然又发消息过来,说需要在每篇文章下边加一个标签,随机显示他们公司的12个业务的广告词。确定了需求,那就动手吧。

其实蛮简单的,先预定义一个数组存储这12个广告词,如

 代码如下 复制代码

$option = array('广www.111cn.net词1','广告词2','广告词3','广告词4','广告词5');


然后随机生成一个下标,

 代码如下 复制代码

$index = rand(0, count($option)-1);
echo $option[$index];

一般情况下,为了扩展方便,最好是将这个数据存入数据库或者xml,不过思路是一样的。


除了上面办法我们可以使用array_rand() 函数,此函数数组中随机选出一个或多个元素,并返回。

例子 1

 代码如下 复制代码

<?php
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
print_r(array_rand($a,1));
?>

输出:

b

在程序调试时如果在本地我们出现500错误可以直接打开php.ini的错误来看到哪里错了,但在服务器中我们是不能这样做的,这样很容易让人感觉网站不正规的同时也可能给其它人看到你网站WEB路径及相关安全数据了,那要如何处理500错误呢,下面我们一看一个方法。

通常程序发生致命错误的时候页面空白,想获取错误信息也不难!主要是利用两个函数:
error_get_last() 获取最后一次发生错误信息:结构如下:

 代码如下 复制代码


Array
(
    [type] => 8
    [message] => Undefined variable: http://www.111cn.net
    [file] => C:WWWindex.php
    [line] => 2
)

register_shutdown_function()在脚本停止执行时注册一个回调函数
有了这两个函数就可以监控致命错误了:

 代码如下 复制代码

error_reporting(E_ALL); //E_ALL
 
function cache_shutdown_error() {
 
    $_error = error_get_last();
 
    if ($_error && in_array($_error['type'], array(1, 4, 16, 64, 256, 4096, E_ALL))) {
 
        echo '<font color=red>你的代码出错了:</font></br>';
        echo '致命错误:' . $_error['message'] . '</br>';
        echo '文件:' . $_error['file'] . '</br>';
        echo '在第' . $_error['line'] . '行</br>';
    }
}
 
register_shutdown_function("cache_shutdown_error");

顺序附本地服务器测试方法

下面来说说显示PHP错误提示消息的三个方法。

一:php.ini配置

php.ini配置中与此相关的有两个配置变量。下面是这两个变量及其默认值:

 代码如下 复制代码

display_errors = Off
error_reporting = E_ALL & ~E_NOTICE

display_errors 变量的目的很明显 —— 它告诉PHP是否显示错误。默认值是 Off。现在我们的目的是显示错误提示,那么:

 代码如下 复制代码

display_errors = On

E_ALL,这个设置会显示从不良编码实践到无害提示到出错的所有信息。E_ALL 对于开发过程来说有点太细,因为它连变量未初始化也显示提示,而这一点正是PHP“高级”的一个特征。幸好,error_reporting的默认值是“E_ALL & ~E_NOTICE”,这样就只看到错误和不良编码了,对程序无不利的提示则不会显示。

修改php.ini后需要重新启动Apache,这样才可以在apache中生效,当然你如果只在命令行下测试程序,是不需要这一步的。


配置php程序中

 代码如下 复制代码

<?php
//禁用错误报告
error_reporting(0);
//报告运行时错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//报告所有错误
error_reporting(E_ALL);
?>

[!--infotagslink--]

相关文章

  • php身份证校验码的计算例子

    下面来给各位同学介绍一个php身份证校验码的计算例子,希望本函数代码能帮助到各位同学哦。 例子 代码如下 复制代码 public function id_ver...2016-11-25
  • phpexcel导出数据身份证后四位0000解决办法

    在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
  • 基于javascript实现根据身份证号码识别性别和年龄

    这篇文章主要介绍了基于javascript实现根据身份证号码识别性别和年龄的相关资料,需要的朋友可以参考下...2016-01-24
  • C#实现验证身份证是否合法的方法

    这篇文章主要介绍了C#实现验证身份证是否合法的方法,实例分析了通过自定义函数实现针对身份证合法性验证的技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • js验证身份证号有效性并提示对应信息

    直接上代码,逐行对代码进行研究,一定会有所收获。function nunber(allowancePersonValue){ if(allowancePersonValue=="身份证号"){ $("#span_username").show(); $("#span_username").html("身份证号不能为空"); r...2015-10-21
  • php根据身份证号码计算年龄

    我们只要知道身份证的生成规则就可以了,像下面我们从指定位置到多少位就是出日期了,然后我们把日期转成时间戳然后进行加减运算就得出了年龄了,下面我们看实例。 ...2016-11-25
  • 基于C#技术实现身份证识别功能

    这篇文章主要介绍了基于C#技术实现身份证识别功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C#身份证号码验证是否正确

    这一篇关于C#语言验证18位身份证号码的验证方法和实例代码,感兴趣的朋友可以参考一下...2020-06-25
  • PHP身份证校验码计算方法

    本文给大家分享尝试使用php语言实现身份证校验码以此来判断用户的身份证号码是否正确...2016-08-27
  • js实现根据身份证号自动生成出生日期

    这篇文章主要介绍了js实现根据身份证号自动生成出生日期,需要的朋友可以参考下...2015-12-17
  • C#根据身份证号码判断出生日期和性别

    这篇文章主要为大家详细介绍了C#根据身份证号码判断出生日期和性别的方法,感兴趣的小伙伴们可以参考一下...2020-06-25
  • PHP实现中国公民身份证号码有效性验证示例代码

    这篇文章主要介绍了PHP实现中国公民身份证号码有效性验证示例代码,可以判断身份证号码的正确性,非常具有实用价值...2017-05-08
  • PHP计算身份证校验码示例

    身份证号码中的校验码是身份证号码的最后一位,是根据中华人民共和国国家标准GB 11643-1999中有关公民身份号码的规定,根据精密的计算公式计算出来的,我们下面来看利用PH...2016-11-25
  • C#验证身份证的函数

    因做项目需要,参考网上资料写了一个身份证验证的C#方法,本方法是在VS2005[C/S] 下写的。前面2个是网友们的实现方法,第三个才是项目中使用的哦,小伙伴们参考下吧。...2020-06-25
  • SqlServer2000+ 身份证合法校验函数的示例代码

    这篇文章主要介绍了SqlServer2000+ 身份证合法校验函数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • php身份证验证相关类

    本程序可以根据身份证信息来获取星座,生肖,性别,年龄等等一些相关的信息了,转的一个实例大家可参考。 代码如下 复制代码 <?php class Idca...2016-11-25
  • C#身份证识别相关技术功能详解

    这篇文章主要介绍了C#身份证识别相关技术详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • PHP 验证身份证是否合法的函数

    本文主要介绍了PHP验证身份证是否合法的函数。具有很好的参考价值,下面跟着小编一起来看下吧...2017-02-18
  • 如何利用JS通过身份证号获取当事人的生日、年龄、性别

    身份证可以识别一个人的信息,下面就介绍一下如何利用js通过身份证号码获取当事人的年龄和性别...2016-01-24
  • PHP导出csv,身份证出现科学计数法的问题

    朋友的一个网站导出会员信息时,导出的csv文件中的身份证号码显示为科学计数法,最后几位直接显示为0,解决的办法其实很简单 其实这个问题跟用什么语言导出csv文件没有...2016-11-25