0

我想验证通过 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))

但它没有像我期望的那样工作。

谢谢你的帮助!

4

1 回答 1

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()。

于 2013-10-30T04:04:47.760 回答