Редактирование файлов в PHP

Компьютеры, программы, периферия, коммуникации, интернет, программирование и т.п. Ранее назывался Hard-n-Soft.
Сообщение
Автор
S_V_A

№ 0 Сообщение S_V_A » 14 май 2004 19:00

Хотел написать редактор файлов на php, но столкнулся с такой проблемой: все кавычки в файле, заменяются вот такой надписью:Как сделать чтобы оставались нормальные кавычки?

BadBlock
Аватара пользователя
Благодарил (а): 1586 раз
Поблагодарили: 8125 раз

№ 1 Сообщение BadBlock » 15 май 2004 00:39

> все кавычки в файле, заменяются вот такой надписью:

Прям сами заменяются? И ты для этого никаких спецфункций не применяешь? ;)

demien

№ 2 Сообщение demien » 15 май 2004 02:23

это очень сильное колдунство :)

S_V_A

№ 3 Сообщение S_V_A » 15 май 2004 07:51

BadBlock :
>> все кавычки в файле, заменяются вот такой надписью:
>
> Прям сами заменяются? И ты для этого никаких спецфункций не применяешь? ;)

Код: Выделить всё

if ($savefile!="") {
$fp=fopen($file,"w");
fwrite($fp,$savefile);
fclose($fp);}
$lines=file($file);
$lng=count($lines);
echo "<form action=\"\" method=\"post\" name=\"pform\"><textarea name=\"savefile\" rows=\"30\" cols=\"60\">";
for ($i=0;$i<$lng;$i++) {
echo $lines[$i];}
echo "</textarea><br><input type=\"submit\" value=\"Сохранить\"></form>";
И не надо спрашивать задана ли переменная $file

BIL
Аватара пользователя
Не админ нифига
Благодарил (а): 1 раз
Поблагодарили: 7 раз

№ 4 Сообщение BIL » 15 май 2004 09:28

S_V_A :
> echo $lines[$i];}

Я PHP знаю на уровне младшего школьника, поэтому только предпокладу:
Как эхе при выводе показать ЧТО это за кавычки (внутритекстовые или лексеморазделительные)? Вот она их их префиксит бэком слэшем. А если взять и самому это в строке сделать, думаю они при выводе пропадут, ибо эха поймет их суть. Мне, что-то, так кажется...

S_V_A

№ 5 Сообщение S_V_A » 15 май 2004 10:26

BIL :
> S_V_A :
>> echo $lines[$i];}
>
> Я PHP знаю на уровне младшего школьника, поэтому только предпокладу:
> Как эхе при выводе показать ЧТО это за кавычки (внутритекстовые или лексеморазделительные)?
> Вот она их их префиксит бэком слэшем. А если взять и самому это в строке сделать,
> думаю они при выводе пропадут, ибо эха поймет их суть. Мне, что-то, так кажется.
> ..
Дело не в этом, проблема в том, что скрипт именно записывает в файл эти кавычки с обр. слешем, читается всё нормально.

BIL
Аватара пользователя
Не админ нифига
Благодарил (а): 1 раз
Поблагодарили: 7 раз

№ 6 Сообщение BIL » 15 май 2004 12:16

S_V_A :
> $fp=fopen($file,"w");

Тогда может написать "bw" раз уж она так похожа на сишную...

BadBlock
Аватара пользователя
Благодарил (а): 1586 раз
Поблагодарили: 8125 раз

№ 7 Сообщение BadBlock » 15 май 2004 15:06

4: BIL

Эха при выводе не выполняет addslashes() автоматически. Ей не надо ничего говорить про кавычки, она просто тупо гадит в аутпут, чем велено, да и всё.

Подозреваю :D , что в данном случае файл отправляется методом POST, и делу мешает текущая установка magic_quotes_gpc в ON:
magic_quotes_gpc boolean

Sets the magic_quotes state for GPC (Get/Post/Cookie) operations. When magic_quotes are on, all ' (single-quote), " (double quote), \ (backslash) and NUL's are escaped with a backslash automatically. If magic_quotes_sybase is also on, a single-quote is escaped with a single-quote instead of a backslash.

Note: magic_quotes_gpc is ON by default.
Решение:

Вариант 1. Поправить в php.ini

Вариант 2. Поправить в самом скрипте (вставить в начало):

set_magic_quotes_runtime(0);
ini_set("magic_quotes_gpc",0);
ini_set("magic_quotes_runtime",0);
ini_set("magic_quotes_sybase",0);

Вариант 3. Удалять кавычки перед записью файла: $str=stripslashes($str);

S_V_A

№ 8 Сообщение S_V_A » 16 май 2004 15:00

7: BadBlock
1 – не подходит. 2 – не работает, не знаю почему. А про 3-й я сам давно догадался, только я с ним без слешей останусь.

BadBlock
Аватара пользователя
Благодарил (а): 1586 раз
Поблагодарили: 8125 раз

№ 9 Сообщение BadBlock » 16 май 2004 15:19

S_V_A :
> 1 – не подходит.

Нет доступа к ini?

> 2 – не работает, не знаю почему.

Ну, я даже не знаю. Запрещено, что ли?

> А про 3-й я сам давно догадался, только я с ним без слешей останусь.

Не останешься: слеши слешуются тоже, поэтому при расслешивании вместо двух слешей подряд останётся один, как и полагается.

S_V_A

№ 10 Сообщение S_V_A » 16 май 2004 19:45

Не останешься: слеши слешуются тоже, поэтому при расслешивании вместо двух слешей подряд останётся один, как и полагается.
А я и не знал даже, спасиб за совет. Значит будем стрипслешами.

djdance
Аватара пользователя
Благодарил (а): 1 раз
Поблагодарили: 4 раза

№ 11 Сообщение djdance » 24 май 2004 01:19

ыгы, я тож с таким сталкивался
лечился как раз маджик_квотами

Блок, про расслешивание даблслешей - это :up: :rotate:

Вернуться в «Компьютерный форум»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей