Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: убрать средствами PHP нежелательные символы из текстового файла.

Сообщения:  [1-10]   [11-13] 

 
 автор: elenaki   (20.09.2004 в 11:37)
 
   для: cheops   (17.09.2004 в 21:35)
 

я сделала! обошлась без записывания данных в файл. переменную $buffer разбила на строки,
потом эти строки преобразаовала в запрос и запихнула все в базу. всем спасибо!

   
 
 автор: cheops   (17.09.2004 в 21:35)   письмо автору
 
   для: elenaki   (17.09.2004 в 16:27)
 

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

   
 
 автор: LimP   (17.09.2004 в 16:36)   письмо автору
 
   для: elenaki   (17.09.2004 в 16:27)
 

значит меняй хостинг...

   
 
 автор: elenaki   (17.09.2004 в 16:27)
 
   для: cheops   (17.09.2004 в 13:53)
 

спасибо! на локалке работает. а на сервере нет. все из-за того, что запрещена запись в файл. нельзя ли
как-то обойтись без записи? у меня теперь два текстовых файла должны передавать свою инфу в базу.
я их открываю поочереди, читаю, разбиваю на строки и заношу в базу. но это, если замену не делать. с
заменой не получается. надо записывать промежуточный результат, а мне это не позволяют.
на сервере, где такая запись разрешена, работает. пытаюсь грузить файл с клиентского сервера, где нет
возможности изменить CHMOD на тот, где есть, но ничего не получается, хотя написано, что fopen() может
открывать удаленные файлы и по FTP и по HTTP.

   
 
 автор: cheops   (17.09.2004 в 13:53)   письмо автору
 
   для: elenaki   (17.09.2004 в 12:39)
 

Тогда становится понятным, почему нервничают блокнот и winCmD - они переводят строки, только при наличии подряд идущих символов возврата коретки \r (13) и перевода строки \n (10), поэтому когда они встречают подряд идущие символы новой страницы (12) и первода строки (10) - они выводят два два квадратика (два не читаемых символа). Эксплорер, судя по всему нормально обрабатывает одиночный символ перевода строки \n (10) и выводит только один квадратик - новая страница...

PS Возиться с невидимыми символами всегда очень интересно, особенно, если задача чужая и её не надо сдавать к сроку :)))

   
 
 автор: cheops   (17.09.2004 в 13:46)   письмо автору
 
   для: cheops   (17.09.2004 в 13:40)
 

Правда в результате остаются пустые строки, но с ними работать гораздо приятнее. Уже не составит труда избавиться от лишних строк заменой двух подряд идущих переводов строк одним.

PS Только следует внимательно следить за тем, как формирется файл - в стиле Windows (перевод строки по \r\n) или в стиле UNIX (перевод строки по \n).

   
 
 автор: cheops   (17.09.2004 в 13:40)   письмо автору
 
   для: elenaki   (17.09.2004 в 12:39)
 

Хм... мне ord() говорит, что это символ 12 - "Новая страница", попробуйте заменить этот символ на манер:
<?php 
  
// имя файла
  
$filename "test.txt";
  
// открываем файл 
  
$file fopen($filename"r"); 
  
// читаем его содержимое в буффер 
  
$buffer fread($filefilesize($filename)); 
  
// закрываем файл 
  
fclose($file); 
  
$buffer str_replace(chr(12),"\r",$buffer);
  
// открываем файл 
  
$file fopen($filename"w"); 
  
// записываем в него новое содержимое
  
fwrite($file$buffer); 
  
// закрываем файл 
  
fclose($file); 
?>

   
 
 автор: elenaki   (17.09.2004 в 12:39)
 
   для: elenaki   (17.09.2004 в 12:35)
 

второй непонятный символ - это перевод строки. почему-то если открывать data1.txt в winCmD или
в блокноте, он показывает два квадратика и не переводит строку, а в эксплорере - один квадратик и
переводит строку

   
 
 автор: elenaki   (17.09.2004 в 12:35)
 
   для: cheops   (16.09.2004 в 23:21)
 

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

   
 
 автор: cheops   (16.09.2004 в 23:21)   письмо автору
 
   для: elenaki   (16.09.2004 в 17:59)
 

Хм... а второй символ какой? Можно вообще не выяснять их природу - попытаться их вырезать, сохранить в переменной или файле, а потом заменять эту последовательность на "\r\n".

PS Было бы неплохо если бы вы прекрепили кусок файла с этими символами обрамлённых парой слов, можно было бы повозиться с ними всем вместе.

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования