在第一次出现字符之前删除所有内容的简单方法是什么?

chr*_*mas 3 php

正如标题所说的那样,真的更感兴趣的是,我的格式是文件名1347020478_Workbook1 12.19.19.csv- 我想要做的是将时间戳从文件名的开头移开并返回其他所有内容,所以Workbook1 12.19.19.csv

我有以下代码可以正常工作:

$original_filename = explode('_', $list->file);
$timestamp         = array_shift($original_filename);
$original_filename = implode('_', $original_filename);
Run Code Online (Sandbox Code Playgroud)

正如我所说,上面的代码有效,但我想知道是否有更简单的方法呢?

jer*_*oen 9

您可以使用stristr()ltrim()避免生成数组的组合:

$original_filename = ltrim(stristr($list->file, '_'), '_');
Run Code Online (Sandbox Code Playgroud)

请参阅手册:stristr从第一次出现的针头开始,包括从头到尾的所有haystack.

  • 非常整洁的正则表达式单线技巧.:) (3认同)
  • 因为我们正在寻找下划线[`strstr()`](http://php.net/manual/en/function.strstr.php)可能是更好的选择. (2认同)

pid*_*l0r 5

您可以使用字符串函数,例如strpos()substr():

$original_filename = '1347020478_Workbook1 12.19.19.csv';
echo substr( $original_filename, strpos( $original_filename, '_') + 1);
Run Code Online (Sandbox Code Playgroud)