1

我不能 \\\我使用以下代码替换

$current_relative_path = dirname(__FILE__); // E:\\xampp\\htdocs\\1\\wp-content\\plugins
$result = str_replace("\\\\", "\\", $current_relative_path);    
file_put_contents("___test.php",var_export($result, true)."\n<br><br>\n", FILE_APPEND);

我得到这样的输出

E:\'xampp\'htdocs\'1\'wp-content\'plugins

我无法\str_replace函数中运行带有转义的 php 任何我需要输出的想法,例如跟随 E:\xampp\htdocs\1\wp-content\plugins

4

5 回答 5

2

echo您使用原始字符串时,浏览器将显示\而不是\\,它使用第一个斜杠来转义第二个斜杠,请参阅我提供的演示:

$current_relative_path = "E:\\xampp\\htdocs\\1\\wp-content\\plugins"; 
echo $current_relative_path;

这是一个有效的演示

根据评论进行编辑

如果您不打算在浏览器上打印输出,请尝试以下操作:

$current_relative_path = "E:\\xampp\\htdocs\\1\\wp-content\\plugins";
$result= str_replace('\\\\', '\\', $current_relative_path);
$result = str_replace("'", "", $result);  //remove single quotes
于 2015-10-09T06:56:22.953 回答
2

使用preg_replace对我有用:

$current_relative_path = 'E:\\xampp\\htdocs\\1\\wp-content\\plugins';
$current_relative_path = preg_replace('/\\\\/', '\\', $current_relative_path);
echo $current_relative_path;

输出

E:\xampp\htdocs\1\wp-content\plugins

根据更新的问题:当您使用dirname(__FILE__)替代解决方案时,可能是realpath()

$current_relative_path = realpath($current_relative_path);

? 我无法在我自己的系统上对其进行测试,但目的realpath是您正在尝试做的事情。虽然你需要访问文件系统- 但有些事情告诉我你已经拥有......

于 2015-10-09T07:03:40.480 回答
1

您只需要使用 PHPstripslshes()函数去除斜线。

 $current_relative_path = "E:\\xampp\\htdocs\\1\\wp-content\\plugins"; 

 echo stripslashes($current_relative_path );

您可以通过在链接中传递您的字符串来在线检查。

https://www.tools4noobs.com/online_php_functions/stripslashes/

注意:PHP 指令 magic_quotes_gpc 应该打开。 http://php.net/manual/en/function.stripslashes.php

于 2015-10-09T07:01:38.510 回答
1

用这个:

$current_relative_path = "E:\\xampp\\htdocs\\1\\wp-content\\plugins";
$current_relative_path = str_replace("\\\\", "\\", $current_relative_path);

echo $current_relative_path;
// Output - E:\xampp\htdocs\1\wp-content\plugins
于 2015-10-09T06:55:35.747 回答
0

看看你的替换语法

$current_relative_path = str_replace("\", '\'' , $current_relative_path);

您已将单引号作为替换字符串('\'')的一部分。删除一个单引号('\')。

于 2015-10-09T07:12:51.043 回答