Unique

从一串字符中取出唯一的数值

  上周在实习中,我得到了一个任务,而这个任务需要解析数据同时文件中的只存在时间,而无日期,日期则被保存在文件名中,例如:server20141210,于是我想到了intval(),但是经过实验发现,输出0。

  这让人很纳闷,intval()函数不是从字符串中取出数值吗?于是翻看PHP官方文档,在Return Values中看到:Strings will most likely return 0 although this depends on the leftmost characters of the string,这告诉字符串中必须左边第一个字符为数值才能被转换为整型数,因此达不到我需要的目的。

  别忘了,还有PHP中不常用的过滤器filter。于是我是用filter_var($fileName, FILTER_SANITIZE_NUMBER_INT)得到字符串形式表示的"20141210",再通过intval()得到20141210,于是得到了我的所求。而在这里FILTER_SANITIZE_NUMBER_INT是指过滤掉非数字的字符(+、-不会被过滤)。

  至此,问题成功解决,当然我也考虑过使用正则匹配得到需要的值,但是正则的开销大家也是清楚的,能不用就尽量不用。

  最后贴上完整代码:

$fileName = 'server20141210';
echo intval(filter_var($fileName, FILTER_SANITIZE_NUMBER_INT));

转载需经作者允许并注明出处(http://blog.hiunique.com/php/73.html)
来自:Unique

添加评论