[英]How to extract only part of string in PHP?
我有一个跟随字符串,我想提取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 ,但我不太确定并且想知道如何编码它,或者我是否可以使用任何其他方法或功能。
您可以使用:
if(preg_match('#".*?\/(.*?)"#',$str,$matches)) {
$filename = $matches[1];
}
或者,您可以使用preg_match在双引号之间提取整个路径,然后使用函数basename
从路径中提取文件basename
:
if(preg_match('#"(.*?)"#',$str,$matches)) {
$path = $matches[1]; // extract the entire path.
$filename = basename ($path); // extract file name from path.
}
这样的事情怎么样:
$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
返回
$string = '..here_can_be_any_length "and_here_any_length/image123.jpg" and_here_also_any_length';
$data = explode('"',$string);
$basename = basename($data[1]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.