在字符串中查找\的strrpos

时间:2011-09-23 20:16:49

标签: php string

这是一个益智游戏。我有一个包含计算机文件路径的变量。我需要将文件名与路径分开。

实施例:  由此:

$filepath = C:\\User\Me\Myfiles\file.jpg

我需要这个:

$path = C:\\User\Me\Myfiles\
$file = file.jpg

我知道如何使用substr获取$ filepath的子字符串。问题是使用“\”作为“针”来获取文件名的位置。

这会导致错误:

$pos = strrpos("\",$filepath);

这不会导致错误,但不会给我$ pos的值:

$pos = strrpos("\\",$filepath);

与往常一样,任何帮助都要得到我永恒的感激。

3 个答案:

答案 0 :(得分:3)

$pos = strrpos("\\",$filepath);

这是尝试在字符串$filepath中找到"\\"的位置。除非$filepath是单个反斜杠,否则不会返回任何位置。

你想要交换两个参数。

$pos = strrpos($filepath, "\\");

此外,basename($filepath)pathinfo($filepath, PATHINFO_BASENAME)可用于获取文件名。

答案 1 :(得分:0)

使用pathinfo($filepath)的可用方法查看SplFileInfo或oo方法的输出。

答案 2 :(得分:0)

preg_match('#^(.+)\\\\(.+)$#', $filepath, $matches);
$path = $matches[1];
$file = $matches[2];

这是有效的,因为+正则表达式量词是贪婪的,所以它将匹配它可以的所有字符。 \是双重转义的,一次是PHP字符串,一次是正则表达式。