Почему при чтении из файла при magic_quotes_runtime=off добавляются бэкслэши?

Nash

Новичок
Почему при чтении из файла при magic_quotes_runtime=off добавляются бэкслэши?

Apache/1.3.34 (Win32) PHP/5.1.2

phpinfo() выдает:
magic_quotes_gpc Off Off
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off

Выполняю код:

$str_msg="три";
$arr_file=file("test.txt");
$str_file=$arr_file['0'];
eval('$str_out="$str_file";');
print $str_out;

В файле test.txt строка: "один", 'два', $str_msg

При чтении из файла получаю (смотрю значение переменных в PhpED):

$str_file="\"один\", 'два', \$str_msg\n"

В итоге скрипт ввыводит: "один", 'два', $str_msg

Почему добавляются слэши? Как это исправить?


при magic_quotes_runtimе on
$str_file="\\\"один\\\", \\'два\\', \$str_msg\n"
 

hermit_refined

Отшельник
А с чего вы взяли, что они добавляются - более аргументированно можете объяснить?
Вы неправильно тут используете eval(), но как правильно - не хочу говорить, ибо не нужно его вообще использовать.
 

Nash

Новичок
Автор оригинала: hermit_refined
А с чего вы взяли, что они добавляются - более аргументированно можете объяснить?
1. смотрю значение переменных в PhpED

2. если перед eval() добавить строку
$str_file="\"один\", 'два', $str_msg\n" //(При чтении из файла $str_file="\"один\", 'два', \$str_msg\n")
то скрипт выведет
"один", 'два', три

Вы неправильно тут используете eval(), но как правильно - не хочу говорить, ибо не нужно его вообще использовать.
eval() использую для демонстрации, что слеш добавляется
 

Pegas

Новичок
Re: Почему при чтении из файла при magic_quotes_runtime=off добавляются бэкслэши?

почитай eval()
 

Nash

Новичок
Re: Re: Почему при чтении из файла при magic_quotes_runtime=off добавляются бэкслэши?

Автор оригинала: Pegas
почитай eval()
Давайте eval() заменим на print $str_file;
результат от этого не изменится

$str_msg="три";
$arr_file=file("test.txt");
$str_file=$arr_file['0'];
print $str_file;
 

hermit_refined

Отшельник
1. смотрю значение переменных в PhpED
Это вы уже писали. Я попросил объяснить более аргументированно. Например, просто вывести её значение.

Почитайте http://ru.php.net/manual/ru/language.types.string.php чтобы понять, что за чушь только что написали. И http://ru.php.net/manual/ru/function.str-replace.php - как замена eval() в данном случае.
 

Nash

Новичок
Автор оригинала: Гравицапа
Я не понял вас. PhpED не показывает значения переменных?


-~{}~ 09.10.06 14:58:

Автор оригинала: hermit_refined
Это вы уже писали. Я попросил объяснить более аргументированно. Например, просто вывести её значение.

Почитайте http://ru.php.net/manual/ru/language.types.string.php чтобы понять, что за чушь только что написали.
Прочитал...
Извините меня, наверное меня уже зациклило и я уже очевидных вещей просто в упор не вижу.
Ткните меня конкретно носом, пожалуйста, почему не работает этот код:

$str_msg="три";
$arr_file=file("test.txt");
$str_file=$arr_file['0']; //Здесь мы должны получить строку $str_file="число {$str_msg}"
echo $str_file;

В файле test.txt строка: число {$str_msg}

В итоге скрипт ввыводит: число {$str_msg}
А должен: число три
 

hermit_refined

Отшельник
Не должен, никогда и ни за какие деньги.
PHP:
$str = 'число $str_msg';
echo $str;
не то же самое, что и
PHP:
echo "число $str_msg";
прочитайте ещё раз ссылку про строки (особенно внимательно - про подстановку переменных).

Хотите получить желаемое - используйте str_replace().
 

Nash

Новичок
Автор оригинала: hermit_refined
Не должен, никогда и ни за какие деньги.
PHP:
$str = 'число $str_msg';
echo $str;
не то же самое, что и
PHP:
echo "число $str_msg";
Это я знаю. Но это справедливо только если я задаю строку в программе как
PHP:
$str_file='число {$str_msg}';
а не при чтении из файла.
Или я не прав?

И объясние, пожалуйста, про отладку в PhpED.
Он неправильно показывает значение переменных?
Если при чтении из файла, в котором
число {$str_msg}
я в отладчике вижу, что получил строку
число {\$str_msg}
Я не должен ему верить?
 

Гравицапа

elbirret elcno
Не прав, пхп просто читает строку из файла...как обычные данные и ничего с ней не делает. Он и не обязан с ними что-то делать.
И объясние, пожалуйста, про отладку в PhpED.
Я не в курсе как там работает этот отладчик и как он у тебя настроен. Почитай документацию по PhpED.

Ты читал сслылку http://phpfaq.ru/debug?

Я не понял вас. PhpED не показывает значения переменных?
->
eval() использую для демонстрации, что слеш добавляется
 

Nash

Новичок
Автор оригинала: Гравицапа
Не прав, пхп просто читает строку из файла...как обычные данные и ничего с ней не делает. Он и не обязан с ними что-то делать.
Я не в курсе как там работает этот отладчик и как он у тебя настроен. Почитай документацию по PhpED.
Ты читал сслылку http://phpfaq.ru/debug?
->
Спасибо. Ссылку я читал еще погода назад, когда начал изучать пхп. И прекрасно обходился без отладчика. А вот 5 дней назад поставил PhpED :D

Всем большое спасибо за ответы.

Возвращаясь к названию темы хочу добавить, что
внутри рнр строки заданные как
PHP:
$str_file='число {$str_msg}';
представляются в виде
число {\$str_msg},
что и показывал PhpED.
 
Сверху