【问题标题】:How to get a certain word from a filename in PHP?如何从 PHP 中的文件名中获取某个单词?
【发布时间】:2018-09-05 10:54:56
【问题描述】:

是否可以在以下文件名中获得“Test”、“Prototype”和“Super”一词:

MyCSV - Test.csv
MyCSV - Prototype.csv
MyCSV - Super.csv

【问题讨论】:

  • 它是 - 找到最后一个点。然后是点之前的最后一个空格。然后剪掉它们之间的所有内容。
  • 如果您的起始前缀字符串是固定的,那么您也可以尝试字符串替换功能,首先替换“MyCSV -”,然后从您的文件名中替换“.csv”以存档您想要的输出

标签: php filenames


【解决方案1】:

使用 pathinfo() 去除扩展名,然后使用 preg_split 用空格和连字符分割单词,然后使用 array_unique 删除所有重复项,例如

$words=array_unique(preg_split("/[\\s\\-]+/u",pathinfo($filename,PATHINFO_FILENAME)));

现在如果你只想要文件名的最后一个单词,

$str=$words[count($words)-1];

或者如果你想要除第一个以外的所有单词,

unset($words[0]);
$str=implode(" ",$words);

【讨论】:

    【解决方案2】:

    使用explode()

    echo explode('.',explode('- ',$filename)[1])[0];
    

    输出:-https://eval.in/979069

    解释:-

    首先,使用-(连字符和空格)展开并使用[1] 获取最后一个值(因为您在展开后获取数组,因此您可以使用索引来获取特定值,它会给您像@ 这样的值987654327@,Prototype.csv,Super.csv....等等)。

    再次使用. 展开并使用[0] 的第一个值作为最终结果。(因为您在展开后获取数组,因此您可以使用索引来获取特定值,它会为您提供类似@987654332 的值@,Prototype,Super....等等)。

    检查此拆分代码以更好地理解:- https://eval.in/979077

    【讨论】:

      【解决方案3】:

      我使用了substr() 函数。

      它更容易使用,但它需要文件名的一致性,因此很容易分割文件名。

      【讨论】:

      • @AlivetoDie 是的,我已经尝试运行它。 +1 更简单。
      • 很高兴为您提供帮助:):)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      相关资源
      最近更新 更多