Php, записывающий отредактированное содержимое файла сценария, вызывает дополнительные разрывы строк

На многоязычном сайте у меня есть два файла php, которые содержат константы php.

Нравиться

определить('ЭЛЕКТРОННАЯ ПОЧТА', 'Электронная почта');
определить('ГЕНДЕР', 'Пол'); . .

.

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

Я проверил файл php после редактирования, и он содержит много дополнительного пространства между каждым статусом php, как показано ниже:

определить('EMAIL', 'Электронная почта');

определить('ПОЛ', 'Пол');

определить('ИМЯ', 'имя');

Также длинная одиночная строка разбивается на множество строк, например.

define('SENTENCE', 'это длинное предложение, которое разбивается на множество строк в соответствии с шириной текстовой области, как я заметил');

Таким образом, это также приводит к ошибке, поскольку она должна быть в одной строке.

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

<textarea  style="width: 664px; height: 353px;" id="edit_file" name="edit_file"><?php
$file = fopen("../en.php", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
  {
echo fgets($file);
  }
fclose($file);
?> </textarea>

и для сохранения файла:

if(isset($_POST['btn']) && $_SERVER['REQUEST_METHOD']=='POST' && !empty($_POST['btn'])){
if (get_magic_quotes_gpc()) {
$filedata = stripslashes($_POST['edit_file']);
}
$filedata=str_replace(array("<br />'",'\n'),array("",''),$filedata);
$size=strlen($filedata);
$file = fopen("../en.php", "w") or exit("Unable to open file!");
fwrite($file,"$filedata",$size);
fclose($file);
}

person Asad kamran    schedule 02.10.2012    source источник
comment
в чем проблема ИЛИ ошибка, напишите об этом...   -  person Yogesh Suthar    schedule 02.10.2012
comment
ошибка или ПРОБЛЕМА: после записи содержимого textarae в файл, если я открою файл в любом текстовом редакторе или Dreamweaver, он покажет много строк между двумя php-стататами, я хочу избежать этого и хочу, чтобы каждый оператор был в последовательных строках, дополнительные строки между двумя php-операторами предоставлено текстовой областью HTML или при печати содержимого файла в текстовую область.   -  person Asad kamran    schedule 02.10.2012
comment
@Yogesh Suthar, эти дополнительные строки или разрывы стамнетов (длинные операторы разбиваются на 2 или 3 строки) вызывают сбой перенаправления заголовка php.   -  person Asad kamran    schedule 02.10.2012
comment
означает, что вы создаете файл php из содержимого текстовой области??   -  person Yogesh Suthar    schedule 02.10.2012
comment
да, я открываю файл, скажем, abc.php и показываю содержимое в текстовой области, после отправки формы я записываю содержимое текстовой области в файл abc.php, файл уже существует. просто читать и писать.   -  person Asad kamran    schedule 02.10.2012


Ответы (1)


Существует 1 непредвиденная цитата, и \n нельзя помещать в простые кавычки:

$filedata=str_replace(array("<br />'",'\n'),array("",''),$filedata);

Заменить на :

$filedata=str_replace(array("<br />","\n"),array("",''),$filedata);
person Alain Tiemblo    schedule 02.10.2012
comment
@Ninsuo +1 спасибо за помощь. Да, неожиданная одинарная кавычка была 1 причиной, и я применяю предложенное вами решение, оно работает для локального, и я приму ваш ответ после выполнения на сервере Linux. - person Asad kamran; 02.10.2012
comment
Я проверил на сервере, теперь редактирование не приводит к разрывам строк, и этот код работал отлично. Но после редактирования php-файла потребительский скрипт не смог перенаправить на любую другую страницу. Пожалуйста, предложите. - person Asad kamran; 02.10.2012
comment
Вероятно, вы используете header() после вывода чего-либо (например, формы или чего-то подобного), но это запрещено, если буферизация вывода не настроена должным образом. В самом верху вашего скрипта поставьте ob_start();, а в конце скрипта поставьте ob_end_flush();. - person Alain Tiemblo; 02.10.2012