我有一个跟随字符串,我想提取image123.jpg。
..here_can_be_any_length "and_here_any_length/image123.jpg" and_here_also_any_length
image123可以是任意长度(newimage123456等),并且可以扩展为jpg,jpeg,gif或png。
我认为我需要使用preg_match,但我不确定并且想知道如何编码它,或者我是否可以使用其他任何方式或功能。
答案 0 :(得分:5)
您可以使用:
if(preg_match('#".*?\/(.*?)"#',$str,$matches)) {
$filename = $matches[1];
}
或者,您可以使用preg_match在双引号之间提取整个路径,然后使用函数basename
从路径中提取文件名:
if(preg_match('#"(.*?)"#',$str,$matches)) {
$path = $matches[1]; // extract the entire path.
$filename = basename ($path); // extract file name from path.
}
答案 1 :(得分:5)
这样的事情:
$str = '..here_can_be_any_length "and_here_any_length/image123.jpg" and_here_also_any_length';
$m = array();
if (preg_match('#".*?/([^\.]+\.(jpg|jpeg|gif|png))"#', $str, $m)) {
var_dump($m[1]);
}
在这里,它会给你:
string(12) "image123.jpg"
我认为模式可能更简单一些 - 例如,您无法检查扩展名并接受任何类型的文件;但不确定它是否符合您的需求。
基本上,在这里,模式:
"
/
:.*?/
.
字符:[^\.]+
\.
(jpg|jpeg|gif|png)
"
与文件名对应的模式的整个部分被()
包围,因此它被捕获 - 在$m
中返回
答案 2 :(得分:1)
$string = '..here_can_be_any_length "and_here_any_length/image123.jpg" and_here_also_any_length';
$data = explode('"',$string);
$basename = basename($data[1]);