我有很多带有嵌入式文件名的字符串('file'只是文件名的一个例子)
$string1 = '?file.png#hello/file.pdf<____!.sss<>file.docx';
$string2 = '###file.txt#§§/FILE.png(((file.pdf**';
文件名是有效的Linux或Windows文件名。
我需要将所有文件名(没有路径)从字符串中提取到数组中,例如:
$first = string2filenames($string1);
// $first should be [ 'file.png','file.pdf','file.docx' ]
$seconnd = string2filenames($string1);
// $seconnd should be [ 'file.txt','FILE.png','file.pdf' ]
如何编写函数string2filenames?
尝试使用preg_match_all(模式为'/[a-zA-Z0-9-_]+\.[a-zA-Z]{2,4}/'
)但未成功。
答案 0 :(得分:1)
我想我发现了一些可能有用的东西 试一试,看看。
它匹配带有多个点的文件名和示例字符串以及一些更高级的文件名似乎可以支持 单击preg_match_all并查看[0](完全匹配) http://www.phpliveregex.com/p/kK2
$pattern ="/([A-Za-z0-9 _-]+\.)+(\w{3,4})/";
编辑; \ w没有捕获_-