【问题标题】:How to slice an input value? [duplicate]如何对输入值进行切片? [复制]
【发布时间】:2014-07-19 12:51:05
【问题描述】:

我的输入值是这样的:Oppa/upload/default.jpeg

我想根据/ 对输入的值进行切片,因为我想获取图像文件名。有谁知道一些技巧来做到这一点?

例子:我想得到default.png

<input type="text" value="Oppa/upload/default.png" id="fileLink" name="fileLink" />

【问题讨论】:

  • 说真的!你以前从未遇到过 PHP 的 explode() 函数吗?
  • 如果您没有在后端正确验证这一点,您可能会给自己带来麻烦。话虽如此,您可能正在寻找explode()。
  • 为什么是 Javascript 和 jQuery 标签?

标签: php html


【解决方案1】:

使用basename():

$path = "Oppa/upload/default.jpeg";
echo basename($path); //will output "default.jpeg"
echo basename($path, '.jpeg'); //will output "default"

第一个参数是要移除尾随组件的路径。如果第一个参数以可选的第二个参数结尾,那么第二个参数也会被截断。

在 Windows 上,斜杠 (/) 和反斜杠 (\) 都用作目录 分隔符。在其他环境中,它是正斜杠 (/)。 - PHP manual

【讨论】:

    【解决方案2】:

    你应该使用basename() PHP 函数。

    【讨论】:

      【解决方案3】:

      这对你有用

      $path = "Oppa/upload/default.jpeg";
      echo basename($path);
      

      【讨论】:

        【解决方案4】:

        使用pathinfo() php function

        $path = "http://domain.tld/Oppa/upload/default.png";
        $info = pathinfo ( $path, PATHINFO_BASENAME ); // returns default.png
        

        【讨论】:

          【解决方案5】:

          另一个解决方案,使用preg_match()

          <?php
          $path = "http://domain.tld/Oppa/upload/default.png";   // or "C:\\domain.tld\Oppa\upload\default.jpg";
          $pattern = '/[\/|\\\\]((?:.(?!\/|\\\\))+)$/';
          if(preg_match($pattern, $path, $matches)){
              echo $matches[1];  // default.png or default.jpg
          }
          ?>
          

          注意:人们声称在使用带有亚洲字符的 basename() 时遇到问题

          【讨论】:

            【解决方案6】:

            我假设如果您的图像路径不会从 Oppa/upload/ 更改,那么应该使用 explode 工作:

            $str = "Oppa/upload/default.jpeg";
            $s= explode("Oppa/upload/",$str);
            echo $s[1];
            

            将相对路径定义为常量可以做的另一件最好的事情,所以:

            const path = "Oppa/upload/";
            $str = "Oppa/upload/default.jpeg";
            $s= explode(path,$str);
            echo $s[1];
            

            也可以。

            【讨论】:

            • 投反对票的原因?
            • 我也一样徘徊? +1 来自我
            • 如果您投反对票,请给出理由,以便我可以找到我自己的错误解决方案。
            • 重新发明轮子并对文件路径进行硬编码 - ergo:没用。
            • const 有另一个解决方案,只需在一个地方更改,并且在任何地方都可以使用。
            猜你喜欢
            • 2021-01-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-09-30
            • 1970-01-01
            • 2015-07-26
            • 1970-01-01
            • 2014-12-28
            相关资源
            最近更新 更多