您好我使用以下方法将数据插入到带有PDO的mysql中,
if( isset( $data['passport'] ) ) $this->passport = stripslashes( strip_tags( $data['passport'] ) );
$stmt->bindValue( "passport", $this->passport, PDO::PARAM_STR );
我如何得到一个只有插入号码的结果,并且将删除任何特殊字符和字母,包括像 - 和+
这样的字符任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
使用 ctype_digit
来检查数字。
像
这样的东西if(ctype_digit($data['passport'])) //if only numbers
{
echo "Valid";
}
答案 1 :(得分:0)
$this->passport = preg_replace('/[^0-9]/', '', $this->passport);
$stmt->bindValue( "passport", $this->passport, PDO::PARAM_STR );
正则表达式/[^0-9]/
允许捕获所提供字符串中的所有非数字字符。要删除它们,只需将其替换为空字符串,即''
。
UPDv1:我还建议根据存储结构通知用户,如果提供的数据不正确。 请考虑验证可能性。
if(!preg_match('/^[0-9]+$/', $this->passport)){
echo 'Invalid data';
// prevent database submition
}