$tag_path = "c:\work\link2\\tmp\\5699\\tables";
我想在\\tables
中删除仅限最后 $tag_path
。
我使用了以下代码:
$tag_path = preg_replace("/\\\\tables$/i", "", $tag_path);
但它返回了以下结果:
c:\work\link2\\tmp\\5699\
为什么呢?如何删除\\tables
中的最后一个$tag_path
?
如果我回显tag_path="c:\work\link2\tmp\5699"
,但我写了日志tag_path="c:\work\link2\\tmp\\5699\"
答案 0 :(得分:2)
只需:
str_replace('\\tables', '', $tag_path);
......应该做的工作。请注意,我使用单引号,而我使用str_replace()
支持preg_replace()
,因为您将要替换常量模式,而不是正则表达式。在这种情况下,str_replace()
更简单,因此更快。
<强>更新强>:
在评论中,您告诉您只有在路径末尾才能替换\\tables
。那么正则表达式是正确的解决方案。使用这个:
preg_replace('~\\\\tables$~', '', $tag_path);
此处单引号也可以解决这个问题。检查this answer,这很好地解释了这一点。此外,我使用~
作为模式分隔符以获得更清晰。
答案 1 :(得分:1)
使用strrpos()
作为最后\\
的后备。 (没有严格的规则)
如果您的tables
为TABLES
,tab
或上一个\\
之后的任何其他数据
echo substr($tag_path,0,strrpos($tag_path,'\\'));