php清理手机变量

时间:2013-03-30 11:36:25

标签: php

我想在数据库上记录人们的电话号码。由于人们以不同的方式输入数字(基于区号)等,我想在它上传到数据库之前将它们输入的任何内容标准化为标准方式,然后当我从数据库中读回并放到页面上时,它来了像这样 1-954-999-9999 以这种格式,然后我可以附加<a href="tel:1-954-999-9999">1-954-999-9999</a>,可以从网络应用程序/或普通网站点击进行通话。< / p>

所有这些都说,我有一个问题。

在POST上这是我处理它的方式

$compBizNumber = mysqli_real_escape_string($c2d, $_POST['compBizNumber']) ;
$compBizNumber = str_replace("(", "-", $compBizNumber);
$compBizNumber = str_replace(")", "-", $compBizNumber);
$compBizNumber = str_replace(" ", "-", $compBizNumber);
$compBizNumber = filter_var($compBizNumber,FILTER_SANITIZE_NUMBER_INT) ;

有没有办法一次性替换多个字符??

我怎么能这样做?

先谢谢。

2 个答案:

答案 0 :(得分:2)

str_replace接受一个数组作为第一个(和第二个参数),所以这样做:

$compBizNumber = str_replace(array("(", ")", " "), "-", $compBizNumber);

但是,更灵活的方法是使用正则表达式替换所有非数字字符:

$compBizNumber = preg_replace("/[^0-9]/", "-", $compBizNumber);

这样您就不必添加用户输入str_replace的所有可能字符。

答案 1 :(得分:1)

为什么不使用正则表达式删除除数字之外的所有内容:

$myNumber = "+31 (0) 43 - 123 345 67";
preg_replace("/[^0-9]/","", $myNumber);

http://codepad.org/30vUqWWC

但是,请注意+我想你必须用00替换它而不是为了使数字有效吗?不是100%肯定那个。