
|
EOMY.NET Хостинг EOMY.NET: Форум поддержки
|
|
Работа с кодировкой. str_replace
|
| Автор |
Сообщение |
lazutov $a ||= 5;


Зарегистрирован: 30.04.2007 Сообщения: 2259
38243 
|
Добавлено: Сб, 11 Окт, 2008 18:35 Заголовок сообщения: Работа с кодировкой. str_replace |
|
|
Есть текст в кодировке сp1251
Надо заменить все двойные переводы строк на одинарные и отдать как файл txt.
Приведённые ниже варианты не дают результата.
| Код: |
$res=str_replace(chr(13),'',$res);
$res=str_replace(chr(10).chr(10),chr(10),$res);
//----
$nl='
';
$res=str_replace($nl.$nl,$nl,$res);
//---
$res=str_replace("\n\n","\n",$res);
//---
$res=nl2br($res);
$res=str_replace("<br><br>","<br>",$res);
$res=str_replace("<br>",chr(10),$res); |
Файл для эксперимента
http://slil.ru/26227553
Заранее спасибо.
Нашедшего ждет премия - полкило монет. _________________ Блог, рынок VDS | whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле - в ЛС |
|
| Вернуться к началу |
|
 |
madhamster $a ||= 5;


Зарегистрирован: 09.10.2006 Сообщения: 752
34389 
|
Добавлено: Сб, 11 Окт, 2008 20:47 Заголовок сообщения: |
|
|
Попробуй регуляркой заменить. У меня была подобная проблема однако один из твоих вариантов исправлял ситуацию... _________________
 |
|
| Вернуться к началу |
|
 |
eomysupport Администратор

Зарегистрирован: 25.12.2005 Сообщения: 4027
-56949 
|
|
| Вернуться к началу |
|
 |
lazutov $a ||= 5;


Зарегистрирован: 30.04.2007 Сообщения: 2259
38243 
|
Добавлено: Вс, 12 Окт, 2008 07:25 Заголовок сообщения: |
|
|
eomysupport
\r все удалены давным давно.(chr(13))
Ваш вариант тоже не помог(ни один).
А можно поподробнее про регексп? _________________ Блог, рынок VDS | whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле - в ЛС |
|
| Вернуться к началу |
|
 |
AlfaUngzipper Три пингвина

Зарегистрирован: 23.02.2007 Сообщения: 312 Откуда: Минск 8214 
|
Добавлено: Вс, 12 Окт, 2008 09:48 Заголовок сообщения: |
|
|
//Обработка строки сообщения
$usemessage = htmlspecialchars(stripslashes($usemessage));
$usemessage = preg_replace("/[\x0A-\x0D]/","ћ",$usemessage);
$usemessage = preg_replace("/(ћ){4,}+/","<br><br> ",$usemessage);
$usemessage = preg_replace("/(ћ){2,3}/","<br> ",$usemessage);
Поблема исследована и написан код был на этапе изучения мной пхп в 2004 году. Попробуйте код применить к флуду "энтерами", попробуйте обработать стихотворение и стихотворение с флудом.
З.Ы.: Естественно <br> поменяйте на \r\n |
|
| Вернуться к началу |
|
 |
Веденин $a ||= 5;


Зарегистрирован: 17.05.2007 Сообщения: 1068 Откуда: Самара 4489 
|
Добавлено: Вс, 12 Окт, 2008 10:54 Заголовок сообщения: |
|
|
Написал скрипт
| Код: |
<?php
$text = file_get_contents('D:\!work\ch\ch.txt');
$text = str_replace("\r","",$text);
$text = str_replace("\n\n","\n",$text);
echo $text;
?>
|
Прогнал на локальном компе, получил результат
| Код: |
Татьяна Полякова
Держи меня крепче
Я знал одну женщину,
Она всегда выходила в окно.
В ее доме было десять тысяч дверей,
Но она всегда выходила в окно.
Она разбивалась насмерть,
Но ей было все равно.
<Тутанхамон>, <Наутилус>
|
все работает как должно быть, зачем нужны регулярки?
P.S. Если у вас не получится дайте прямой линк на тестовый txt файл
P.P.S. Важно \r надо менять не на пробел, а на нулевой символ. _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
lazutov $a ||= 5;


Зарегистрирован: 30.04.2007 Сообщения: 2259
38243 
|
Добавлено: Вс, 12 Окт, 2008 11:31 Заголовок сообщения: |
|
|
попробуйте не echo, в сохранить в текстовый файл.
Тестовый файл: unpop.ru/books/L.test.zip
PS \r и так меняется на нулевой _________________ Блог, рынок VDS | whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле - в ЛС |
|
| Вернуться к началу |
|
 |
eomysupport Администратор

Зарегистрирован: 25.12.2005 Сообщения: 4027
-56949 
|
|
| Вернуться к началу |
|
 |
Веденин $a ||= 5;


Зарегистрирован: 17.05.2007 Сообщения: 1068 Откуда: Самара 4489 
|
Добавлено: Вс, 12 Окт, 2008 11:42 Заголовок сообщения: |
|
|
У меня и так была переадресация в текстовый файл средствами dos, ну вот скрипт:
| Код: | <?php
$text = file_get_contents('D:\!work\L.test\L.33210.txt');
$text = str_replace("\r","",$text);
$text = str_replace("\n\n","\n",$text);
$fp = fopen ('l.txt','w');
fwrite($fp,$text);
?> |
Вот результат
| Код: | Текст получен через систему UnPoP.ru
Источник: http://www.litportal.ru/genre17/author86/read/page/1/book33210.html
Татьяна Полякова
Держи меня крепче
Я знал одну женщину,
Она всегда выходила в окно.
В ее доме было десять тысяч дверей,
Но она всегда выходила в окно.
Она разбивалась насмерть,
Но ей было все равно.
<Тутанхамон>, <Наутилус>
Однажды он мне его показал. В тот день я болталась по торговому центру, выбирала Ритке подарок. Направилась к эскалатору на втором этаже, откуда-то вывернул парень в темной куртке, в надвинутой на глаза бейсболке, задел меня плечом, буркнул <извините> и пошел дальше. И я, кивнув в ответ, мол, нет проблем, задел и задел, со всяким бывает, вдруг ощутила толчок, но в сердце, и замерла, глядя ему вслед и чувствуя, как все внутри холодеет и сворачивается в тугой клубок.
Парень успел удалиться на десяток метров, обернулся под моим растерянным взглядом, лихо улыбнулся и помахал рукой. |
P.S.
Положил этот скрипт на сервер,запустил вот исходник
http://vedenin.ru/data/L.txt
вот результат
http://vedenin.ru/data/r.txt _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
Веденин $a ||= 5;


Зарегистрирован: 17.05.2007 Сообщения: 1068 Откуда: Самара 4489 
|
Добавлено: Вс, 12 Окт, 2008 11:52 Заголовок сообщения: |
|
|
| eomysupport писал(а): | | А как у вас происходит запись в файл? (подозреваю, что проблема там) |
А может проблема в чтение данных? Вы берете текстовый файл с сервера или текст передается методом get? Может у вас на сервере какая то экзотическая кодировка
P.S. Попробуйте скопировать мой скрипт как есть, если он не будет работать это будет странно.
Копируйте этот код на сервер и запишите в L.txt исходный файл, а результат появится в r.txt:
| Код: | <?php
$text = file_get_contents('L.txt');
$text = str_replace("\r","",$text);
$text = str_replace("\n\n","\n",$text);
$fp = fopen ('r.txt','w');
fwrite($fp,$text);
?> |
_________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
lazutov $a ||= 5;


Зарегистрирован: 30.04.2007 Сообщения: 2259
38243 
|
Добавлено: Вс, 12 Окт, 2008 12:51 Заголовок сообщения: |
|
|
текст берется с litportal.ru в cp-1251
код не работает.
eomysupport
запись присходит. стринг пишется в файл, добавляется в архив zip, файл анлинкается. md5 добавляемого и извлеченного из архива файла совпадают.
Я наверное,попрошу администратора хостинга, где это присходит обновить zlib на сервере. _________________ Блог, рынок VDS | whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле - в ЛС |
|
| Вернуться к началу |
|
 |
eomysupport Администратор

Зарегистрирован: 25.12.2005 Сообщения: 4027
-56949 
|
|
| Вернуться к началу |
|
 |
lazutov $a ||= 5;


Зарегистрирован: 30.04.2007 Сообщения: 2259
38243 
|
|
| Вернуться к началу |
|
 |
Gosudar Хостинг — это наше всё!

Зарегистрирован: 08.04.2007 Сообщения: 169
2400 
|
Добавлено: Вс, 12 Окт, 2008 18:38 Заголовок сообщения: |
|
|
заменяет все двойные переводы строк на одинарные
| Код: | <?php
$text = file_get_contents('ch.txt');
$text = str_replace("\n\n","\n",$text);
$text = str_replace("\r\n\r\n","\r\n",$text);
$fp = fopen ('l.txt','w');
fwrite($fp,$text);
?> |
и :
| Цитата: | trim
(PHP 3, PHP 4)
trim - вырезает пустое пространство в начале и в конце строки.
Описание
string trim (string str [, string charlist])
Примечание: необязательный параметр charlist был введён в PHP 4.1.0.
Эта функция возвращает строку с вырезанными в начале и конце строки str пробелами. Без второго параметра trim() вырезает:
" " (ASCII 32 (0x20)), обычный space/пробел.
"\t" (ASCII 9 (0x09)), символ tab.
"\n" (ASCII 10 (0x0A)), символ новой строки (line feed).
"\r" (ASCII 13 (0x0D)), символ carriage return/возврат каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), символ vertical tab/вертикальной табуляции.
Вы можете также специфицировать вырезаемые символы в параметре charlist. Просто перечислите все символы, которые вы хотите вырезать. С помощью .. вы можете специфицировать диапазон символов.
|
|
|
| Вернуться к началу |
|
 |
|
Powered by phpBB © 2001, 2005 phpBB Group
|