[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: file_put_contents()
dvs
есть файл в нем несколько строчек. Когда получаю данные из файла(несколько строчек) функцией file_get_contents(); и вывожу в <textarea></textarea>проблем нет, а вот когда записываю в файл записывается все в одну строчку с \r\n. как записать в файл не в одну строчку а в несколько, без \r\n?



Спустя 31 минута, 18 секунд (24.09.2012 - 12:10) walerus написал(а):
dvs Покажи свой код, как именно и что ты сохраняешь... на простом примере.

Спустя 6 минут, 3 секунды (24.09.2012 - 12:17) dron4ik написал(а):
Ты наверное формируешь строку в 'str' ???

Спустя 26 минут, 8 секунд (24.09.2012 - 12:43) dvs написал(а):
код небольшой
<form method="post" action="">
<textarea
name="robots"></textarea>
<input
type="submit" value="сохранить">
</form>


-------------------------------------------------------------------------
file_put_contents('../robots.txt', $_POST['robots']);

ЗЫ в textarea пишу текст ставлю enter-ы, они заменяются на \r\n
получается вот такой файл
User-agent: *\r\nDisallow: /\r\n11232

Спустя 16 минут (24.09.2012 - 12:59) dron4ik написал(а):
$a = "$_POST['robots']\r\n\r\n";

file_put_contents('../robots.txt', $a );




<?php
$file = "../robots.txt";
// Открываем файл для получения существующего содержимого
$current = file_get_contents($file);
// Добавляем нового человека в файл
$current .= "$_POST['robots']\n";
// Пишем содержимое обратно в файл
file_put_contents($file, $current);
?>

Спустя 1 минута, 43 секунды (24.09.2012 - 13:00) walerus написал(а):
dvs Как определил чти именно \r\n идет, а не просто \n ?

Спустя 42 секунды (24.09.2012 - 13:01) walerus написал(а):
dron4ik - это ты что за пример привел ?

Спустя 3 минуты, 32 секунды (24.09.2012 - 13:05) dvs написал(а):
Цитата (dron4ik @ 24.09.2012 - 09:59)
$a = "$_POST['robots']\r\n\r\n";

file_put_contents('../robots.txt', $a );




<?php
$file = "../robots.txt";
// Открываем файл для получения существующего содержимого
$current = file_get_contents($file);
// Добавляем нового человека в файл
$current .= "$_POST['robots']\n";
// Пишем содержимое обратно в файл
file_put_contents($file, $current);
?>

в $_POST['robots'] уже есть эти символы, и записывается в файл с этими символами, а не переводит на новую строку

Спустя 3 минуты, 23 секунды (24.09.2012 - 13:08) dron4ik написал(а):
Цитата (walerus @ 24.09.2012 - 10:01)
dron4ik - это ты что за пример привел ?

с мануала...

Спустя 15 минут, 16 секунд (24.09.2012 - 13:23) dron4ik написал(а):
Цитата (dvs @ 24.09.2012 - 10:05)
в $_POST['robots'] уже есть эти символы, и записывается в файл с этими символами, а не переводит на новую строку

У меня все работает с твоим же первым примером...

Ковыряй в сторону фопен наверное(((

Спустя 1 минута, 17 секунд (24.09.2012 - 13:25) dron4ik написал(а):
Погодь, а как ты просматриваешь файл???????

Спустя 2 минуты, 27 секунд (24.09.2012 - 13:27) dvs написал(а):
Цитата (dron4ik @ 24.09.2012 - 10:25)
Погодь, а как ты просматриваешь файл???????

с помощью F4

Спустя 10 минут, 49 секунд (24.09.2012 - 13:38) walerus написал(а):
dvs - ты на севере или на локале? В чем просматриваешь файлы? текстовый редактор или... ?

Спустя 11 минут, 40 секунд (24.09.2012 - 13:49) dron4ik написал(а):
dvs
если ты через веб то прогоняй сперва в nl2br()...

Спустя 5 минут, 50 секунд (24.09.2012 - 13:55) dvs написал(а):
Цитата (dron4ik @ 24.09.2012 - 10:49)
dvs
если ты через веб то прогоняй сперва в nl2br()...

спасибо, попробую

Спустя 1 минута, 19 секунд (24.09.2012 - 13:57) dvs написал(а):
Цитата (walerus @ 24.09.2012 - 10:38)
dvs - ты на севере или на локале? В чем просматриваешь файлы? текстовый редактор или... ?

на сервере, смотрю файл через Notepad++

Спустя 7 минут, 32 секунды (24.09.2012 - 14:04) walerus написал(а):
Покажи свой код весь, что то не чисто там... в какой кодировке форма ...?

Спустя 5 минут, 44 секунды (24.09.2012 - 14:10) dvs написал(а):
Цитата (dron4ik @ 24.09.2012 - 10:49)
dvs
если ты через веб то прогоняй сперва в nl2br()...

не помогло((, делал так
file_put_contents('../robots.txt', nl2br($_POST['robots'], false));

Спустя 6 минут, 46 секунд (24.09.2012 - 14:17) dvs написал(а):
Цитата (walerus @ 24.09.2012 - 11:04)
Покажи свой код весь, что то не чисто там... в какой кодировке форма ...?

		function  setting_site(){
$model = new Model_Structure();
if(isset($_POST['setting_site'])){
file_put_contents('../robots.txt', nl2br($_POST['robots'], false));
file_put_contents('../editor.css', nl2br($_POST['editor']), false);
}
$this->registry['template']->set('robots', file_get_contents('../robots.txt'));
$this->registry['template']->set('editor', file_get_contents('../editor.css'));
$this->registry['template']->show('setting_site');
}

форма в кодировке utf-8 without BOM,

<form action="" method="post">
<div
id="wrapper">
<div
id="page">
<div
id="content">
<h1
class="botspace">Настройки сайта</h1>
<p>
Данные настройки предназначены для опытных пользователей. Если вы не имеете представления о назначении данных настроек и способе их применения, пожалуйста, не вносите изменения.</p><br />
<div
id="login_form" class="clearfix">
<label
for="robots">robots.txt</label>
<textarea
cols="70" rows="20" id="robots" name="robots"><?=$robots;?></textarea><br /><br />
<label
for="editor">editor.css</label>
<textarea
cols="70" rows="20" id="editor" name="editor"><?=$editor;?></textarea>
<input
type="hidden" name="setting_site" value="1">
<!--</form>-->
</div>
</div>
</div>
</div>

<!-- нижние кнопки (начало) -->
<div id="control_space"></div>
<div
id="control">
<div
id="bottom_shadow"></div>
<div
id="control_content" class="confirm clearfix">
<!--<form>-->
<input type="submit" value="Сохранить" id="confirmremove" />
<!--</form>-->
<a href="<?=$_SERVER['HTTP_REFERER']?>">Отменить</a>
</div>
</div>

<!-- нижние кнопки (конец) -->
</form>

Спустя 6 минут, 10 секунд (24.09.2012 - 14:23) dron4ik написал(а):
		function  setting_site(){
$model = new Model_Structure();
if(isset($_POST['setting_site'])){
file_put_contents('../robots.txt', $_POST['robots']);
file_put_contents('../editor.css', $_POST['editor']);
}
$this->registry['template']->set('robots', nl2br(file_get_contents('../robots.txt')));
$this->registry['template']->set('editor', file_get_contents('../editor.css'));
$this->registry['template']->show('setting_site');
}



а так?

Спустя 2 минуты, 21 секунда (24.09.2012 - 14:25) dvs написал(а):
Цитата (dron4ik @ 24.09.2012 - 11:23)
а так?

результат один и тот же(т.е. в файле так 111\r\n222\r\n333), ошибку исправил здесь
file_put_contents('../editor.css', nl2br($_POST['editor']), false);

Спустя 2 минуты, 5 секунд (24.09.2012 - 14:27) dron4ik написал(а):
Цитата (dvs @ 24.09.2012 - 11:25)
Цитата (dron4ik @ 24.09.2012 - 11:23)
а так?

результат один и тот же, ошибку исправил здесь
file_put_contents('../editor.css', nl2br($_POST['editor']), false);

Да, затупил... в ЦСС не нужно тег <br> совать)

а третий параметр зачем? он вроде по умолчанию false и так...

Спустя 3 минуты, 52 секунды (24.09.2012 - 14:31) dvs написал(а):
Цитата (dron4ik @ 24.09.2012 - 11:27)
в ЦСС не нужно тег <br> совать)

не один и тот, разницу не разглядел сначала, такой вот
111<br />
222<br />
333

Да третий не нужен вроде

Спустя 3 часа, 46 минут, 11 секунд (24.09.2012 - 18:17) dron4ik написал(а):
dvs
Дай толково понятие что ты хочешь получить в итоге? Может мы советуем вообще другие вещи...

Спустя 16 часов, 37 минут, 43 секунды (25.09.2012 - 10:55) dvs написал(а):
Цитата (dron4ik @ 24.09.2012 - 15:17)
Дай толково понятие что ты хочешь получить в итоге? Может мы советуем вообще другие вещи...

мне нужно в файл записать данные(данные приходят из формы так - $_POST['robots'] = '111\r\n222\r\n333';)не в одну строку, а в несколько.
мне нужно заменить '\r\n' на что такое, что будет писать в файл с новой строки
Т.Е.
В файле сейчас так сохраняется:
111\r\n222\r\n333

А должно сохраняться так:
111
222
333


Спустя 1 час, 4 минуты, 2 секунды (25.09.2012 - 11:59) dron4ik написал(а):
Что ты будешь дальше с файлом делать? это важно знать!!!

Спустя 17 минут, 8 секунд (25.09.2012 - 12:16) dvs написал(а):
Цитата (dron4ik @ 25.09.2012 - 08:59)
Что ты будешь дальше с файлом делать? это важно знать!!!

дальше я буду брать из него данные и выводить в <textarea>$data</textarea> для редактирования

Спустя 10 минут, 13 секунд (25.09.2012 - 12:26) dron4ik написал(а):
А ныне в textarea выводит с \r\n? не в файле, а в браузере...

Спустя 6 минут, 6 секунд (25.09.2012 - 12:33) dvs написал(а):
Цитата (dron4ik @ 25.09.2012 - 09:26)
А ныне в textarea выводит с \r\n? не в файле, а в браузере...

да, но если вручную в файле написать текст построчно, то и выводит построчно(как будто там есть <br>)Так что если решится вопрос правильной записи в файл, то и выводить в браузере в текстареа будет как надо(построчно)

Спустя 9 минут, 35 секунд (25.09.2012 - 12:42) dron4ik написал(а):
file_put_contents('../robots.txt', str_replace("\r\n","\r\n",$_POST['robots']));

Может так попробуй... а то я уже и не знаю что придумать)))

Спустя 18 минут, 1 секунда (25.09.2012 - 13:00) dvs написал(а):
Цитата (dron4ik @ 25.09.2012 - 09:42)
file_put_contents('../robots.txt', str_replace("\r\n","\r\n",$_POST['robots']));

Может так попробуй... а то я уже и не знаю что придумать)))

попробовал, ничего не изменилось, а смысл заменять на такое же? я уже думал про кодировку все файлы(в который записывается, php-файл, файл формы) все в кодировке utf-8 without BOM

Спустя 5 минут, 16 секунд (25.09.2012 - 13:05) dron4ik написал(а):
суть в том что строка должна быть в двойных кавычках(по умолчанию оно так и есть), а у тебя в одинарные сует))) Ну или мы что то пропустили)

Спустя 14 минут, 29 секунд (25.09.2012 - 13:20) killer8080 написал(а):
dvs
ищи где у тебя в коде происходит глобальна обработка $_POST, где то происходит подмена.

Спустя 34 минуты, 20 секунд (25.09.2012 - 13:54) dvs написал(а):
Цитата (killer8080 @ 25.09.2012 - 10:20)
dvs
ищи где у тебя в коде происходит глобальна обработка $_POST, где то происходит подмена.

точно, а я и забыл про нее))) сейчас попробую

Спустя 1 час, 23 минуты, 57 секунд (25.09.2012 - 15:18) dvs написал(а):
Цитата (killer8080 @ 25.09.2012 - 10:20)
ищи где у тебя в коде происходит глобальна обработка $_POST, где то происходит подмена.

Так и есть)))
	function safe_mysql(&$value){
$value = mysql_real_escape_string($value);

}

array_walk_recursive($_GET, 'safe_mysql');
array_walk_recursive($_POST, 'safe_mysql');
array_walk_recursive($_COOKIE, 'safe_mysql');
array_walk_recursive($_REQUEST, 'safe_mysql');

думаю теперь что может сделать обратное mysql_real_escape_string, как то не красиво делать
if(!$_POST['robots']){$value = mysql_real_escape_string($value);}

Спустя 2 минуты, 48 секунд (25.09.2012 - 15:21) dron4ik написал(а):
нужно не перезаписывать $_POST а создавать подобный массив к примеру $POST... И все будет как по маслу!

Спустя 52 минуты, 6 секунд (25.09.2012 - 16:13) killer8080 написал(а):
Цитата (dvs @ 25.09.2012 - 15:18)
Так и есть)))
function safe_mysql(&$value){
  $value = mysql_real_escape_string($value);

}

array_walk_recursive($_GET, 'safe_mysql');
array_walk_recursive($_POST, 'safe_mysql');
array_walk_recursive($_COOKIE, 'safe_mysql');
array_walk_recursive($_REQUEST, 'safe_mysql');


Это что, самопальный magic quotes ? biggrin.gif Как думаешь, почему его выкинули из php?

Не нужно искажать входные данные, экранировать нужно в процессе использования.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.