Почему выходные данные этих двух функций отличаются? - PullRequest
0 голосов
/ 04 июня 2009
$value = '\\40';
file_put_contents('o.txt',$value);
file_put_contents('o2.txt',var_export($value,true));


D:\test>php str.php
D:\test>cat o.txt
\40
D:\test>cat o2.txt
'\\40'

Ответы [ 5 ]

1 голос
/ 04 июня 2009

var_export($value, true) возвращает значение объявления строки '\\40', тогда как $value возвращает интерпретированное значение этого объявления, таким образом \40.

0 голосов
/ 04 июня 2009

$ value = '\ 40';

действительно означает «\ 40», первое «\» избегает второго.

var_export - Выводит или возвращает анализируемое строковое представление переменной

var_export добавляет "\", чтобы его экранировать и анализировать:

'\\40'
0 голосов
/ 04 июня 2009

Поскольку выходные данные из var_export кодируются, вы можете поместить результат в файл PHP и включить его или передать его вызову eval. $ value = \ 40, как показывает o.txt. Но если бы вы сказали: $ x = eval (file_get_contents ('o2.txt')); х будет также = \ 40.

0 голосов
/ 04 июня 2009

Значение $ value равно '\ 40' (это обратный слеш, четыре, ноль). Когда вы просто набираете это, это то, что вы получаете.

var_export дает вам действительный php-код, в котором вам нужно использовать обратную косую черту, как вы это делали в первой строке кода.

Имеет ли это смысл?

0 голосов
/ 04 июня 2009

Поскольку var_export выводит или возвращает синтаксическое строковое представление переменной

http://de.php.net/manual/en/function.var-export.php

Ваш код работает отлично. ;) Делает только то, что ожидается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...