0

您好我正在使用以下方法通过PDO将数据插入mysql,

if( isset( $data['passport'] ) ) $this->passport = stripslashes( strip_tags( $data['passport'] ) );

$stmt->bindValue( "passport", $this->passport, PDO::PARAM_STR );

我怎样才能得到一个只有插入数字的结果,并且任何特殊字符和字母都将被删除,包括 - 和 + 等字符

任何帮助将不胜感激。谢谢。

4

2 回答 2

1

使用ctype_digit仅检查数字。

就像是

if(ctype_digit($data['passport'])) //if only numbers
{
echo "Valid";
}
于 2013-10-05T16:32:25.847 回答
0

使用preg_replace()

$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
}
于 2013-10-05T16:29:40.773 回答