我想通过PHP验证我网站上传的所有文件。我正在使用正则表达式来比较文件内容,但它似乎并没有像我期望的那样工作。我想接受每行只有1个字词的文件。
EXPECTED INPUT:
HP34930
HP09099
HP98899
UNACCEPTABLE INPUT:
HP89980 HP98798 HP09232
some other text
HP58089
这是我的代码:
$texthandle = file($_FILES["textfile"]["tmp_name"]);
foreach ($texthandle as $textline)
{
if (!preg_match("/(HP\d+){1}/", $textline))
{
echo "Incorrect file format. Please provide a text file with 1 term per line.";
exit(0);
}
}
有人可以建议为什么这不能检测我想要的方式吗?
我也试过
if (!preg_match("/^(HP\d+){1}$/", $textline))
但是我没想到它会起作用。
感谢您的帮助!
答案 0 :(得分:1)
不确定什么不起作用,但请尝试:
$texthandle = file($_FILES["textfile"]["tmp_name"], FILE_IGNORE_NEW_LINES);
然后:
if (!preg_match("/^HP\d+$/", $textline))
或者如果只允许5位数字:
if (!preg_match("/^HP[\d]{5}$/", $textline))
如果末尾有任何空格,如空格,制表符等,则会失败,因此您可以在$ textline上尝试trim()。