我正在尝试从字符串末尾删除字母,直到字符串以某些字符结束。
我有以下字符串:
$filename=test1/test.jpeg;
$filename2=project/test2/test1112.jpeg;
// The file name length could vary.
我想获取文件夹,因此值为test1
或project/test2
我试过了
$folder = substr($filename,-4)
但这是静态的。我该如何动态地做到这一点?
答案 0 :(得分:3)
你需要使用php的dirname函数
$filename = 'test1/test.jpeg';
$filename2 = 'project/test2/test1112.jpeg';
var_dump(dirname($filename));
var_dump(dirname($filename2));
答案 1 :(得分:2)
可能会更快做到
$folder = substr($filename, 0, strrpos('/'));
答案 2 :(得分:1)
您可以使用数组将字符串拆分为/
$file_parts_ary = explode("/", $filename);
如果数组中的最后一个元素是文件名,那么您就知道所有以前的元素都是路径。您可以再次组合它们或拉出一个特定的。
$file_path_ary = array_pop($file_parts_ary); // remove the filename
$file_path = implode("/", $file_path_ary); // Put the rest of the path back together
答案 3 :(得分:1)
PHP有一个名为strrpos的函数,它返回字符串中最后一个元素。所以在那之后你可以使用substr($ strin,0,strrpos(“/”))
OK?
答案 4 :(得分:1)
如果它是您正在寻找的特定文件名,则PHP的内置函数dirname()
为probably what you want。
对于提出的问题的更通用的答案,当然可以使用substr()
在字符串中向后工作,直到达到某个字符。
这是一个通用的“从字符串末尾删除字符,直到我达到某个字符”功能:
<?php
$str = 'This is a few words in some sort of order; it makes some sort of sense.';
function find_to_last_char($str, $char) {
$reversed_string = strrev($str);
$char_pos = strpos($reversed_string, $char);
if ($char_pos === false) return $str; // character not present
$trim = substr($reversed_string, $char_pos);
return strrev($trim);
}
echo find_to_last_char($str, ';');
答案 5 :(得分:1)
PHP pathinfo function是您正在寻找的。以下是基于您的代码的示例:
<?php
$filenames = array(
'test1/test.jpeg',
'project/test2/test1112.jpeg'
);
foreach ($filenames as $filename) {
echo pathinfo($filename, PATHINFO_DIRNAME) . "\n";
}
导致:
test1
project/test2
答案 6 :(得分:0)
反转字符串,删除第一个斜杠的所有内容,然后重新反转它以获取没有文件名的原始字符。