2016-08-24 2 views
1

У меня есть переменная, заданная по пути файла. Путь динамически устанавливается на основе даты, такойphp string обратная косая черта, за которой следует цифра

$str = "IMAGES\2016\08\01\NM.jpg" 

Обратите внимание на обратную косую черту следуют цифры. Это задается сервером, и я не могу изменить его до того, как он достигнет моего php-файла, однако, похоже, он вызывает кодирование этих символов, что приводит к нарушению моего скрипта.

Я попытался использовать str_replace для изменения обратных косых черт косым чертам, но, согласно моему пониманию, the php manual on blackslashes, он кодируется до того, как функция имеет шанс запустить.

Мой вопрос заключается в следующем:

Есть ли способ, чтобы изменить то, как PHP читает эту строку? или есть способ, которым я могу изменить его, чтобы он стал полезным?

ответ

0

Обратная косая черта в строке $str ускользает от символа, сразу же после него, вы можете предотвратить это поведение, используя одинарные кавычки, или; вы можете избежать обратной косой черты (дождитесь ее ...), используя обратную косую черту.

echo $str = "IMAGES\2016\08\01\NM.jpg"; 

Результат: IMAGES?68\NM.jpg

echo $str = "IMAGES\\2016\\08\\01\\NM.jpg"; 

Результат: IMAGES\2016\08\01\NM.jpg

Помимо: Вы можете использовать str_replace или preg_replace заменить каждую одиночную обратную косую черту с двойной косой черты.

+0

Спасибо, моя главная проблема заключалась в использовании двойных кавычек, цифры, следующие за обратной косой чертой, кодировались каким-то странным образом, и я не мог избежать этого до того, как переменная будет установлена, потому что она извлекается из БД .. Я клянусь, я попробовал одинарные кавычки, прежде чем отправил свой вопрос, но по какой-то причине не работал, пока я не вернулся и не попробовал это позже :) подтолкнуть его к делу по средам? – zhwatts

+0

Мы все были там, глядя на то, что кажется очевидным, но навсегда нажимать. Больше кофеина для вас! ...или менее. –

0

Вау, я чувствую себя главным идиотом.

$str = 'IMAGES\2016\08\01\NM.jpg' 

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