Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从路径中获取第二个实例的PHP正则表达式_Php_Regex - Fatal编程技术网

从路径中获取第二个实例的PHP正则表达式

从路径中获取第二个实例的PHP正则表达式,php,regex,Php,Regex,我有一个路径“./uploads/e2c_name_icon/”,我需要从路径中提取e2c_name_icon。 我尝试的是使用str_replace函数 $msg = str_replace("../uploads/","","../uploads/e2c_name_icon/"); 这将导致输出“e2c_name_icon/” 有一种更好的方法可以做到这一点。我正在寻找使用正则表达式的替代方法。您最好使用本机PHP路径函数,而不是自己尝试解析它 例如: $path=“../u

我有一个路径“./uploads/e2c_name_icon/”,我需要从路径中提取e2c_name_icon。 我尝试的是使用str_replace函数

       $msg = str_replace("../uploads/","","../uploads/e2c_name_icon/");
这将导致输出“e2c_name_icon/”


有一种更好的方法可以做到这一点。我正在寻找使用正则表达式的替代方法。

您最好使用本机PHP路径函数,而不是自己尝试解析它

例如:

$path=“../uploads/e2c_name_icon/”;
$msg=basename(dirname(realpath($path));//e2c_名称_图标

使用本机PHP路径函数比自己解析要好得多

例如:

$path=“../uploads/e2c_name_icon/”;
$msg=basename(dirname(realpath($path));//e2c_名称_图标

试试这个。输出:e2c_名称_图标

<?php

$path = "../uploads/e2c_name_icon/";

// Outputs: 'e2c_name_icon'
echo explode('/', $path)[2];

试试这个。输出:e2c_名称_图标

<?php

$path = "../uploads/e2c_name_icon/";

// Outputs: 'e2c_name_icon'
echo explode('/', $path)[2];

如果您严格希望在“../uploads”之后获取url的最后一部分

然后你可以用这个:

$url = '../uploads/e2c_name_icon/';
$regex = '/\.\.\/uploads\/(\w+)/';
preg_match($regex, $url, $m)
print_r ($m); // $m[1] would output your url if possible

如果您严格希望在“../uploads”之后获取url的最后一部分

然后你可以用这个:

$url = '../uploads/e2c_name_icon/';
$regex = '/\.\.\/uploads\/(\w+)/';
preg_match($regex, $url, $m)
print_r ($m); // $m[1] would output your url if possible

使用PHP提供的
basename
函数

 $var = "../uploads/e2c_name_icon/";
 echo basename( $var ); // prints e2c_name_icon


使用PHP提供的
basename
函数

 $var = "../uploads/e2c_name_icon/";
 echo basename( $var ); // prints e2c_name_icon


您可以在str_更换后进行修剪

echo $msg = trim(str_replace("../uploads/","","../uploads/e2c_name_icon/"), "/");
我认为你不需要用正则表达式来做这个。简单的字符串函数通常更快

您还可以使用strrpos查找最后一个
/
,然后修剪这两个
/

$path = "../uploads/e2c_name_icon/";
echo $msg = trim(substr($path, strrpos($path, "/",-2)),"/");
我在strrpos中添加了-2以跳过最后一个
/
。这意味着它在
上传后返回
/
的位置

因此substr将返回
/e2c\u name\u icon/
,trim将同时删除
/
,您可以在str\u替换后进行修剪

echo $msg = trim(str_replace("../uploads/","","../uploads/e2c_name_icon/"), "/");
我认为你不需要用正则表达式来做这个。简单的字符串函数通常更快

您还可以使用strrpos查找最后一个
/
,然后修剪这两个
/

$path = "../uploads/e2c_name_icon/";
echo $msg = trim(substr($path, strrpos($path, "/",-2)),"/");
我在strrpos中添加了-2以跳过最后一个
/
。这意味着它在
上传后返回
/
的位置

因此,substr将返回
/e2c\u name\u icon/
,trim将同时删除
/

,如果
$path
是一个虚拟路径,或者
$path
没有从脚本的cwd解析,则此操作无效。如果
$path
是一个虚拟路径,或者
$path
没有从脚本的cwd解析,则此操作无效似乎至少缺少一行(
preg_match()
?)。如何在regexOh中使用它我删除了该行,要修复它这似乎至少缺少一行(
preg_match()
?)。如何在regexOh中使用它我删除该行,要修复它