我正在尝试使get_extension()
函数返回文件扩展名,如果它包含在支持的文件类型数组中。现在它不返回任何东西。
我已经测试了我的contains()
功能,它看起来像我想要的那样工作,但我无法弄清楚为什么get_extension()
无法正常工作。我如何声明我的数组是一个问题吗?
$supported = ['.md', '.txt', '.html', '.pdf'];
function get_extension($name){
foreach ($supported as $type){
if(contains($name, $type)){
return $type;
}
}
}
function contains($outer, $inner){
return strpos($outer, $inner) !== false;
}
echo get_extension("spencer.txt");
答案 0 :(得分:1)
您可以将pathinfo
方法与PATHINFO_EXTENSION
标志一起使用,它将返回您的文件扩展名。
此后你可以将你的supportedextensions数组传递给function,它将通过数组中存在的检查扩展名返回true false,或者不使用in_array
$supported = ['md', 'txt', 'html', 'pdf'];
function get_extension($name, $supportedExtns){
$extn = pathinfo($name, PATHINFO_EXTENSION);
if(in_array($extn, $supportedExtns))
return true;
return false;
}
if(get_extension("spencer.txt", $supported)){
echo 'extn exists in array';
} else {
echo 'extn doesn\'t exists in array';
}
答案 1 :(得分:1)
范围 范围 范围 get_extension()
不知道$supported
是什么将它作为参数传递,或者在这种情况下,我可能会在函数
$supported
function get_extension($name){
$supported = ['.md', '.txt', '.html', '.pdf'];
foreach ($supported as $type){
if(contains($name, $type)){
return $type;
}
}
}
答案 2 :(得分:0)
由于 会有多个需要访问数组的函数,因此我在函数中添加了global
个关键字以使其可访问。
$supported = ['.md', '.txt', '.html', '.pdf'];
function get_extension($name){
global $supported;
foreach ($supported as $type){
if(contains($name, $type)){
return $type;
}
}
}
答案 3 :(得分:0)
你可以在php中使用public string SplFileInfo::getExtension (void)
函数,看下面修改过的函数,你的函数没有得到支持变量,因为它没有作为GLOBAL访问
$supported = array("txt", "md", "html", "pdf");
function get_extension($name)
{
$obj = new SplFileInfo($name);
$extension=$obj->getExtension();
if(in_array($extension,$GLOBALS['supported']))
{
return $extension;
}
else
{
return "Extension is not supported";
}
}
echo get_extension("spencer.txt");