Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何为数据库条目转换电话、传真、邮政编码格式_Php_Jquery_Sql_Maskedinput - Fatal编程技术网

Php 如何为数据库条目转换电话、传真、邮政编码格式

Php 如何为数据库条目转换电话、传真、邮政编码格式,php,jquery,sql,maskedinput,Php,Jquery,Sql,Maskedinput,我屏蔽了电话、传真和邮政编码的输入。电话和传真的格式为(999)999-9999,邮政编码的格式为99999-9999。当我提交页面时,数据库希望使用不同的格式。当我更新数据库时,我只需要传入数值。我需要先转换格式,然后再将其传递到SQL插入。如何将页面上显示的格式转换为数据库所需的格式 数据库需要电话和传真格式,如:1234567890 和邮政编码格式,如:123456789(尽管它不要求全部为9位数字,因为大多数人只输入前5位数字的邮政编码) 虽然它不能正确地转换数字,但这里有一个JSFID

我屏蔽了电话、传真和邮政编码的输入。电话和传真的格式为(999)999-9999,邮政编码的格式为99999-9999。当我提交页面时,数据库希望使用不同的格式。当我更新数据库时,我只需要传入数值。我需要先转换格式,然后再将其传递到SQL插入。如何将页面上显示的格式转换为数据库所需的格式

数据库需要电话和传真格式,如:1234567890
和邮政编码格式,如:123456789(尽管它不要求全部为9位数字,因为大多数人只输入前5位数字的邮政编码)

虽然它不能正确地转换数字,但这里有一个JSFIDLE

我在JSFIDLE上添加了一个按钮,它只是将结果附加到一个div中。在我的真实页面上,它是一个提交按钮,用于发布值,以便可以在INSERT语句中访问和传递这些值。我不确定我是否应该捕捉到这一点,转换是使用jQuery还是在我的PHP部分。(我认为PHP是正确的方法,只是不确定如何使用)

以下是JSFIDLE中的代码片段:

<label>Phone: </label><input type="text" id="phone" placeholder="(555) 555-5555" />
<label>Fax: </label><input type="text" id="fax" placeholder="(555) 555-5555" />
<label>Zip Code: </label><input type="text" id="zipcode" placeholder="Zip Code" />

$('#phone').mask('(999) 999-9999');
$('#fax').mask('(999) 999-9999');
$('#zipcode').mask('99999-9999');
电话:
传真:
邮政编码:
$(“#phone”).mask(“(999)999-9999”);
$('fax')。掩码('999)999-9999');
$('#zipcode')。掩码('99999-9999');
另一方面,我在输入上有名字,所以我可以发布值,我只是没有在这个例子中添加它


如果需要任何其他信息,请告诉我。

屏蔽输入非常适合验证和UI。但是字符串中的“meta”字符可以很容易地删除(这是数据库所需要的)。尽管如此,有两种变化:

PHP(首选方法,用户交互可能性最小):

JavaScript:

// perform the cleanse client-side
param = param.replace(/([^\d])/g,'');
无论采用哪种方式,您都将获得
1234567890
电话号码
1234567890
1234567889
邮政编码
12345-6789
。您可能还想(在去掉其他字符后)运行一个测试,以确保电话和zip的长度分别为10和9/5。e、 g

// NOTE: i'm not checking `$_POST` but you should...
$phone = preg_replace('/([^\d])/', '', $_POST['phone']);
$fax   = preg_replace('/([^\d])/', '', $_POST['fax']);
$zip   = preg_replace('/([^\d])/', '', $_POST['zip']);

if (strlen($phone) == 10
  && strlen($fax) == 10
  && (strlen($fax) == 5 || strlen($fax) == 9)){
  // proceed with inserting the three values in to the databasse;
  // they are now clean and are of the proper lengths.
}

假设它通过了验证(我理解这个问题),只需使用一些正则表达式替换就可以删除所有非数字字符,如
$phone=preg_replace('/([^\d])/','','$phone)
?非常感谢。这正是我所需要的!这只是一个附带的问题,因为我很好奇……我知道使用JavaScript或PHP都会得到相同的结果,但其中一个更好吗?或者这只是个人喜好?从你的更新来看,是的,我肯定在检查$\u POST isset:)@Brian:当涉及到将内容放入数据库时,在服务器上是最好的方法。永远不要相信用户;不管你在一个网页上做什么,都有方法可以绕过它;因此,服务器应在移交后执行任何和所有验证。将javascript验证视为一种方便,仅此而已。很好的解释!非常感谢您的帮助和额外的解释!谢谢
// NOTE: i'm not checking `$_POST` but you should...
$phone = preg_replace('/([^\d])/', '', $_POST['phone']);
$fax   = preg_replace('/([^\d])/', '', $_POST['fax']);
$zip   = preg_replace('/([^\d])/', '', $_POST['zip']);

if (strlen($phone) == 10
  && strlen($fax) == 10
  && (strlen($fax) == 5 || strlen($fax) == 9)){
  // proceed with inserting the three values in to the databasse;
  // they are now clean and are of the proper lengths.
}