0

在我的表单中,有一个用于重命名文件的输入。当他们选择要上传的文件时,会检查它以确保它只是一个 .pdf 文件。我正在尝试检查输入以确保他们没有为新名称添加文件扩展名。我正在尝试检查“pdf”的任何变体这是我所拥有的,但有没有更好的方法来做到这一点。欢迎任何帮助,谢谢

  <?php
    function get_file_extension($pdf)
    {
     return substr(strrchr($pdf,'.'),0);
    }

    $pdf = "test.pdf";

    $test = strstr($pdf, '.');
    $pdf_ext = array('.pdf','.PDF','.Pdf','.PDf','.pdF','.pDf','.PdF','.PdF');
    $test =  get_file_extension($pdf);
    if($test == in_array($test,$pdf_ext)) {
       echo 'you do not a .pdf';
    } else {
       echo 'name ok';
    }
   ?>
4

2 回答 2

1

只需使用strtoloweror strtoupper

if(strtolower($test) == 'pdf') {
   echo 'pdf';
} else {
   echo 'no pdf';
}

或者

if(strtoupper($test) == 'PDF') {
   echo 'pdf';
} else {
   echo 'no pdf';
}
于 2012-04-26T18:26:29.527 回答
1

除了不允许用户输入文件扩展名为 .pdf 的名称外,您还可以检查他们是否输入,然后为他们删除。

<?php

function get_filename_without_pdf($file){
    preg_match('/(.+?)(\.pdf)?$/i', $file, $matches);
    return $matches[1];
}

echo get_filename_without_pdf('test1.pdf') . PHP_EOL;
echo get_filename_without_pdf('test2.PdF') . PHP_EOL;
echo get_filename_without_pdf('test3.txt') . PHP_EOL;
echo get_filename_without_pdf('test4') . PHP_EOL;

输出

test1
test2
test3.txt
test4
于 2012-04-26T18:42:56.720 回答