PHP str_replace не работает должным образом

Я пытаюсь использовать str_replace для исправления пути к файлу, как показано ниже:

$a="F:\xampp\htdocs\yii\get_smart\Music\mix\English\1636464449";  
$a=str_replace('\\','/', $a);  
echo $a;

возвращает:

F:
mpp/htdocs/yii/get_smart/Music/mix/Englishs6464449

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?

Моя версия PHP 5.3.8.


person Community    schedule 18.09.2012    source источник
comment
Каков ваш ожидаемый/желаемый результат?   -  person nnnnnn    schedule 19.09.2012


Ответы (3)


Используйте одинарную кавычку для определения $a

$a='F:\xampp\htdocs\yii\get_smart\Music\mix\English\1636464449';  

проблема не в str_replace, а в строке, определенной в двойных кавычках. Обратная косая черта экранирует x и другой символ после него.

person Luca Rainone    schedule 18.09.2012

Это происходит потому, что ваша строка заключена в двойные кавычки, поэтому \x анализируется как символ.

На самом деле, он пытается прочитать \xam как символ. Документы: http://php.net/manual/en/regexp.reference.escape.php

Поместите свою строку в одинарные кавычки (или избегайте косой черты перед x).

person Rocket Hazmat    schedule 18.09.2012

Ваша проблема в том, что в первой строке есть несколько экранированных последовательностей. Например, \xam имеет значение в php. Похоже, \16 тоже может что-то означать. Вы должны повторить $a перед выполнением str_replace и посмотреть, что вы получите.

person ajon    schedule 18.09.2012