当前位置: 首页 > 知识库问答 >
问题:

为什么这个简单的PHP preg_match()函数不能工作?

秦胡媚
2023-03-14

虽然未显示$\u文件数组,但这是用于文件上载的,我在文件上载方面遇到问题,因此无法获取$\u文件数组的[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();

    ?>

共有3个答案

乐正育
2023-03-14

您的正则表达式中存在错误:

"./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();

?>

在线示例

单于钊
2023-03-14

如果你想保持周期,一定要避开它。

$pattern = "/\.mp3$/";
张绍晖
2023-03-14

这样做:

 $extension = "/mp3$/";

$extension = "/\.mp3$/";

在线示例

原因是,您需要分隔符来开始和结束表达式(这些是斜杠,虽然可以是任何字符),并且前面或后面不能有任何内容。“$”表示在字符串末尾的分隔符之间查找字符串。

您可以通过转义它来保持句点(否则它将意味着任何字符都有一次,这意味着testmp3将是匹配的)。

但实际上最好的答案是在注释中建议的——php的pathinfo()——因为您正在解析文件名。尽管在某些情况下,您可能需要进行其他安全性测试,比如检查mimetype。

 类似资料:
  • 预计此函数将无法typeCheck。然而,没有解释发生这种情况的原因。在GHCI中试用时,我得到了以下输出: 为什么会出现这种情况?

  • 我正在学习使用stl向量,这是奇怪的,这个程序不能工作。这有什么问题?如果我想用Vector实现同样的功能,应该怎么做呢?

  • 使用scandir()函数时,我收到以下php警告: Scandir无法打开目录:公共html/page2中不允许操作。php在线3 第2页。php 我想使用这个功能来打印我的根文件夹的文件和子目录,但它不工作。 有人知道怎么修吗?

  • chrome浏览器 onclick链接 O:https://www.w3schools.com窗口打开 X:about:空白窗口打开

  • 我试图制作一个基本的C程序来读取一个文件,但由于某种原因,当我使用运行它时<代码>/Test1 Test1。txt我得到“错误:'s'可能在未初始化的情况下用于此函数”。

  • 为什么这不会增加?我正在批处理文件中使用这个。它做任何事情都是正确的,只是没有增加。我做错了什么? 编辑:这不是重复,这是一个完全不同的问题。

  • 我在学校上课: 然后我创建了School的两个实例,并比较了两个实例的相等性: 即使我设置了相同的和到

  • 问题内容: 为什么这个独立的代码不起作用: 即使变量中包含https,每次也可以打印。 问题答案: 如有疑问,请阅读文档: [strpos]返回大海捞针中第一次出现针的数字位置。 因此,您想尝试更多类似的方法: 因为否则返回一个数字,并且您正在寻找布尔值。