搜索字符串并将其后面的单词返回到数组中

时间:2013-11-09 16:43:27

标签: php string

我有一个长字符串,我想要检索.png

之前的所有字词

例如我有:

blablabla /name01.png blablabla /name_may_have_different_sizes02.png blablabla

我希望获得一个包含name01.pngname_may_have_different_sizes02.png

的数组

某些图片的路径类似于/folder1/folder2/image.png我还想只采用文件名而不是整个路径。

3 个答案:

答案 0 :(得分:3)

使用preg_match_all

preg_match_all('#/(([^/ ]*)\.png)#', $string, $matches);
print_r($matches[1]); // with extension
print_r($matches[2]); // without extension

打印:

Array ( [0] => name01.png [1] => name_may_have_different_sizes02.png )
Array ( [0] => name01 [1] => name_may_have_different_sizes02 )

说明:

#/(([^/ ]*)\.png)#是一种模式,搜索以/开头的字符串,后跟任何字符 - 除了空格和/。最后必须是.png

答案 1 :(得分:0)

正如其他人所暗示的那样,你可能最好不要使用正则表达式。

$input = "blablabla /name01.png ......";
$parts = explode(" ",$input);
$files = array_filter($parts,function($word) {return substr($word,-4) == ".png";});

完成!

答案 2 :(得分:-1)

你应该使用regexp和PHP preg_match_all 函数(http://us2.php.net/manual/ru/function.preg-match-all.php

  

正则表达式:#/(。*?)。png#

它可以根据需要运行,在线注册测试程序中检查: Check your example here