Php “如何替换”\\&引用;在使用正则表达式的URL中?
我只想删除Php “如何替换”\\&引用;在使用正则表达式的URL中?,php,regex,Php,Regex,我只想删除$tag\u path中最后的\\tables 我使用了下面的代码: $tag_path = "c:\work\link2\\tmp\\5699\\tables"; 但它返回了以下结果: $tag_path = preg_replace("/\\\\tables$/i", "", $tag_path); 为什么??如何删除$tag\u path中最后的\\tables 如果我回显tag\u path=“c:\work\link2\tmp\5699”,但我写日志tag\u path=
$tag\u path
中最后的\\tables
我使用了下面的代码:
$tag_path = "c:\work\link2\\tmp\\5699\\tables";
但它返回了以下结果:
$tag_path = preg_replace("/\\\\tables$/i", "", $tag_path);
为什么??如何删除$tag\u path
中最后的\\tables
如果我回显tag\u path=“c:\work\link2\tmp\5699”
,但我写日志tag\u path=“c:\work\link2\\tmp\\5699\”
,只需:
c:\work\link2\\tmp\\5699\
。。。我应该做这项工作。请注意,我使用的是单引号,我使用的是str_replace()
支持preg_replace()
,因为您将要替换一个常量模式,而不是正则表达式。在这种情况下,str_replace()
更简单,因此速度更快
更新: 在注释中,您告诉我们,只有在路径结束时才需要替换
\\tables
。那么正则表达式就是正确的解决方案。使用这个:
str_replace('\\tables', '', $tag_path);
这里的单引号也起到了作用。检查哪一个很好地解释了这一点。此外,我正在使用~
作为模式分隔符,以便更加清晰。只是:
c:\work\link2\\tmp\\5699\
。。。我应该做这项工作。请注意,我使用的是单引号,我使用的是str_replace()
支持preg_replace()
,因为您将要替换一个常量模式,而不是正则表达式。在这种情况下,str_replace()
更简单,因此速度更快
更新: 在注释中,您告诉我们,只有在路径结束时才需要替换
\\tables
。那么正则表达式就是正确的解决方案。使用这个:
str_replace('\\tables', '', $tag_path);
这里的单引号也起到了作用。检查哪一个很好地解释了这一点。此外,我正在使用~
作为模式分隔符,以便更加清晰。用作最后一个\
的查找。(无严格规定)
如果您的表格
是表格
,选项卡
或最后一个\\
之后的任何其他数据,这甚至可以工作
preg_replace('~\\\\tables$~', '', $tag_path);
用作最后一个\\
的查找。(无严格规定)
如果您的表格
是表格
,选项卡
或最后一个\\
之后的任何其他数据,这甚至可以工作
preg_replace('~\\\\tables$~', '', $tag_path);
使用
str_replace()
替换:str_replace('\\tables','$tag_path)代码>。我只想删除最后一个“\\tables”。如果tag_path有2个'\\tables'可能与@user1497597重复:我不确定它是如何工作的。看见您的preg\u replace
语句按其应有的方式工作。没有正确的答案请改用str\u replace()
:str\u replace('\\tables','$tag\u path)代码>。我只想删除最后一个“\\tables”。如果tag_path有2个'\\tables'可能与@user1497597重复:我不确定它是如何工作的。看见您的preg\u replace
语句正常工作。没有正确答案,我只删除最后一个“\\tables”挑剔:这仍然不起作用。要匹配文字反斜杠,您必须编写\\\\
。(至于原因,请参见。);-)@阿马尔穆拉里嘿,谢谢!。没想到会这样。但现在听起来很有逻辑:)如果我回显tag_path=“c:\work\link2\tmp\5699”,但我写log tag_path=“c:\work\link2\\tmp\\5699\”我只删除最后的“\\tables”挑剔的地方:这仍然不起作用。要匹配文字反斜杠,您必须编写\\\\
。(至于原因,请参见。);-)@阿马尔穆拉里嘿,谢谢!。没想到会这样。但现在听起来很有逻辑:)如果我回显tag_path=“c:\work\link2\tmp\5699”,但我写log tag_path=“c:\work\link2\\tmp\\5699\”如果我回显tag_path=“c:\work\link2\tmp\5699”,但我写log tag_path=“c:\work\link2\\tmp\\5699\”@user1497597,很容易在末尾加一个斜杠。看到这个否,我使用代码:substr($tag\u path,0,strrpos($tag\u path,'\\');如果我仍然写入日志结果:tag_path=“c:\work\link2\\tmp\\5699\”如果我使用echo tag_path=“c:\work\link2\tmp\5699”,但我写入日志tag_path=“c:\work\link2\\tmp\\5699\”。我回显相同的演示结果。但是写日志,它仍然是错误的。您期望的输出是什么?如果我回显tag_path=“c:\work\link2\tmp\5699”,但我写日志tag_path=“c:\work\link2\\tmp\\5699\”@user1497597,很容易在末尾添加斜杠。看到这个否,我使用代码:substr($tag\u path,0,strrpos($tag\u path,'\\');如果我仍然写入日志结果:tag_path=“c:\work\link2\\tmp\\5699\”如果我使用echo tag_path=“c:\work\link2\tmp\5699”,但我写入日志tag_path=“c:\work\link2\\tmp\\5699\”。我回显相同的演示结果。但写日志时,仍然会出错。您预期的输出是什么?