Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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 preg_替换最后一个斜杠和目录名或文件名_Php_Regex - Fatal编程技术网

Php preg_替换最后一个斜杠和目录名或文件名

Php preg_替换最后一个斜杠和目录名或文件名,php,regex,Php,Regex,文件: 我只想用\example替换\index C:\Some\Location\index 它只是太贪婪了。我不知道有任何修饰符可以解决这个问题 谢谢 echo preg\u replace('/[\\\\\\\\\\/]{1}[^\\/]*?$/','\example',$file)怎么样?如何echo preg\u replace('/[\\\\\\\\\\/]{1}[^\\\\/]*?$/','\example',$file)?将替换为[^/\],它匹配除斜杠以外的任何内容。我还将r

文件:

我只想用\example替换\index

C:\Some\Location\index
它只是太贪婪了。我不知道有任何修饰符可以解决这个问题


谢谢

echo preg\u replace('/[\\\\\\\\\\/]{1}[^\\/]*?$/','\example',$file)怎么样

如何
echo preg\u replace('/[\\\\\\\\\\/]{1}[^\\\\/]*?$/','\example',$file)

替换为
[^/\]
,它匹配除斜杠以外的任何内容。我还将regex分隔符更改为
@
,因为斜杠在处理路径时不合适

echo preg_replace('/[\\\|\/]{1}.*?$/', '\example', $file);

替换为
[^/\]
,它与斜杠以外的任何内容都匹配。我还将regex分隔符更改为
@
,因为斜杠在处理路径时不合适

echo preg_replace('/[\\\|\/]{1}.*?$/', '\example', $file);
和一个无RegExp的解决方案: 和一个无RegExp的解决方案:
如果可以使用正斜杠而不是那些难看的反斜杠(是的,windows支持正斜杠),则不需要正则表达式:


如果可以使用正斜杠而不是那些难看的反斜杠(是的,windows支持正斜杠),则不需要正则表达式:


如果你坚持使用正则表达式

$str = 'C:/Some/Location/index';
echo dirname($str).'/example';

我建议使用

 echo preg_replace('/[^\/\\]*$/', 'example', $file) 

相反,它将安全地处理前向和反斜杠、根目录等。如果您坚持使用正则表达式

$str = 'C:/Some/Location/index';
echo dirname($str).'/example';

我建议使用

 echo preg_replace('/[^\/\\]*$/', 'example', $file) 

相反,它将安全地处理前斜杠和反斜杠、根目录等。

Perfect。谢谢你的解释。太好了。也谢谢你的解释。好吧,我不能假设任何平台在斜杠上使用一个或另一个,除非我要替换斜杠,但这似乎是不必要的@西蒙,我认为正则表达式在这里非常合适。@Senica-执行路径操作?我会坚持我原来的观点。在任何平台上你都不需要反斜杠。向前斜杠是一条路要走。它们可以在Linux/Unix、OSX和Windows上工作,并且可能在大多数/所有外来系统上都可以工作。好吧,我不能假设任何平台使用斜杠,除非我要替换斜杠,但这似乎是不必要的@西蒙,我认为正则表达式在这里非常合适。@Senica-执行路径操作?我会坚持我原来的观点。在任何平台上你都不需要反斜杠。向前斜杠是一条路要走。它们可以在Linux/Unix、OSX和Windows上工作,并且可能可以在大多数/所有外来系统上工作。
 echo dirname($file).'\example'