我要测试输入的类型是否为1234567(7位数字)。 我用
preg_match($pattern,$subject);
其中
$pattern = '/^[0-9]{7}$/';
但是,如果主题是
,我得到1分L-8987765
我不想。我该如何克服?
function isDocid($documento_id)
{
$subject = pg_escape_literal($documento_id);
$pattern1 = '/^[0-9]{7}$/';
if (preg_match($pattern1, $subject) === 1)
{
return 1;
}
else
{
return 0;
}}
$test_carta = isDocid('L-8987765');
echo('<p> ja existe docid '. $test_carta .'</p>');
我期望: ja存在docid 0
答案 0 :(得分:0)
来自the documentation(斜体字是我的):
pg_escape_literal()
转义用于查询PostgreSQL数据库的文字。它以PostgreSQL格式返回转义文字。pg_escape_literal()
在数据前后添加引号。
换句话说,由于引号的原因,您永远都不会从正则表达式检查中得到肯定的结果。在准备将数据插入数据库查询之前,请不要使用数据库转义符。或者,更好的是,不要在数据库查询中插入PHP变量,而应使用prepared statements。
function isDocid($documento_id)
{
return (preg_match('/^[0-9]{7}$/', $documento_id) === 1) ? 1 : 0;
}
$test_carta = isDocid('L-8987765');
echo('<p> ja existe docid '. $test_carta .'</p>');