Не могу заменить \\ на \ в php

Я не могу заменить \\ с \ я использовал следующий код

$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

Я не могу запустить php с escape \ в str_replace функционировать любую идею мне нужно положить как следовать E:\xampp\htdocs\1\wp-content\plugins

5 ответов

С помощью 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 это то, что вы пытаетесь сделать. Вам нужен доступ к файловой системе, но что-то подсказывает, что у вас уже есть...

Когда ты 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

Использовать этот:

$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

Вам просто нужно удалить косую черту с помощью PHP stripslshes() функция.

 $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

Посмотрите на ваш синтаксис Заменить

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

Вы включили одинарную кавычку как часть строки замены ('\''). Удалите одну одинарную кавычку ('\').

Другие вопросы по тегам