虽然没有显示$ _FILES数组,但这是用于文件上传,我在文件上传方面遇到了问题,所以我无法获得$ _FILES数组的[type]部分......但这是只是一个简单的问题,为什么这个功能不起作用......
<?php
function getExtension() {
// global $testFile;
$extension = "./mp3/"; // also tried simply mp3 without the forwards slashes
$testFile = "song.mp3";
if(preg_match($extension, $testFile)) {
echo "match found";
}else {
echo "no match found";
}
}
getExtension();
?>
答案 0 :(得分:5)
这样做:
$extension = "/mp3$/";
或
$extension = "/\.mp3$/";
原因是,你需要分隔符来开始和结束你的表达式(那些是斜线,虽然可以是任何字符)并且不能在它们之前或之后有任何东西。 &#34; $&#34;意思是,找到字符串末尾的分隔符之间的字符串。
你可以通过逃避它来保持句号(否则它将意味着任何一个字符,意味着testmp3
将匹配)。
但实际上最好的答案是在评论中提出的 - php&#39; s pathinfo()
- 因为你正在解析文件名。虽然在某些情况下,您可能希望进行其他安全性测试,例如检查mimetype。
答案 1 :(得分:4)
如果你想保持这段时间,一定要逃避它。
$pattern = "/\.mp3$/";
答案 2 :(得分:2)
您的正则表达式中存在错误:
"./mp3/" => "/\.mp3$/"
结果:
<?php
function getExtension() {
// global $testFile;
$extension = "/\.mp3$/"; // also tried simply mp3 without the forwards slashes
$testFile = "song.mp3";
if(preg_match($extension, $testFile)) {
echo "match found";
}else {
echo "no match found";
}
}
getExtension();
?>