Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертация html в txt, Почти работает, но 
:(
    Опции темы
Alek74
Дата 24.3.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Делаю так:

Код
//Определяем путь.
    $dir = $file;
// Читаем и выводим.
echo readfile($dir);


Выводит естественно страничку отформатированную html.

Но, есть один момент, может я изначально не правильно действую.
Нужно прочтать содержимое файла, заменить все теги на знаки переноса и вывести содержимое в виде текстового файла.
Вот пример.
Использовать такую функцию мне посоветовали.
Код
//Путь к файлу    $dir = $file;
// читаем его
$content = readfile($dir);

function html_to_text ($document)

{
$search = array ("'<script[^>]*?>.*?</script>'si",  // Au?acaao javaScript
                 "'<[\/\!]*?[^<>]*?>'si",           // Au?acaao HTML-oaae
                 "'([\r\n])[\s]+'",                 // Au?acaao i?iaaeuiua neiaieu
                 "'&(quot|#34);'i",                 // Caiaiyao HTML-nouiinoe
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(\d+);'e");                    // eioa?i?aoe?iaaou eae php-eia

$replace = array ("",
                  "",
                  "\\1",
                  "\"",
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\\1)");

$text = preg_replace($search, $replace, $document);
return $text;
}


html_to_text ($content);
echo "$text";


Может это вообще работать не будет
Точнее это работает как указано выше.

Это сообщение отредактировал(а) Alek74 - 24.3.2006, 18:42
--------------------
---------------------------------- «Филисофия жизни ©»  ---------------------------------- 
PM MAIL   Вверх
DemoCode
Дата 24.3.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 1
Всего: 41



А чем функция htmlentities() не подходит?


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
Ciber SLasH
Дата 24.3.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Alek74, тебе посоветовали чушь. Делай так:
Код

$content = file_get_contents('./file.txt');
$content = htmlspecialchars($content, ENT_QUOTES);
echo $content;

PM   Вверх
Alek74
Дата 24.3.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Цитата(Ciber SLasH @ 24.3.2006, 18:29)
Alek74, тебе посоветовали чушь. Делай так:
Код

$content = file_get_contents('./file.txt');
$content = htmlspecialchars($content, ENT_QUOTES);
echo $content;

Да. Вариант работает, но только не так как надо. Выводиться текст вместе с тегами.

А задача заменить теги на знаки переноса и отступы. Нужен на выходе текст вида
Код
  Кир БУЛЫЧЕВ

                           ТРИНАДЦАТЬ ЛЕТ ПУТИ



                                    1

     Сто шесть лет назад корабль "Антей" покинул Землю.
     И  как  не  велика  его  скорость,  как  ни  ничтожно   сопротивление
космического вакуума гигантской пуле, траектория полета которой  соединяет
уже неразличимую даже в самый мощный телескоп Землю и Альфу  Лебедя,  путь
займет в общей сложности сто девятнадцать земных лет.



Это сообщение отредактировал(а) Alek74 - 24.3.2006, 19:10
--------------------
---------------------------------- «Филисофия жизни ©»  ---------------------------------- 
PM MAIL   Вверх
DemoCode
Дата 24.3.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 1
Всего: 41



Цитата(Alek74 @ 24.3.2006, 20:07 Найти цитируемый пост)
Выводиться текст вместе с тегами.


Не понимаю, а тебе как надо.
Если без тэгов, так
$text = strip_tags ($text);


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
Alek74
Дата 24.3.2006, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Нужна конвертация на лету html в txt.

Т.е. надо заменить теги текстовым форматированием. Убрать все лишнее.

Это сообщение отредактировал(а) Alek74 - 24.3.2006, 19:18
--------------------
---------------------------------- «Филисофия жизни ©»  ---------------------------------- 
PM MAIL   Вверх
-=Ustas=-
Дата 24.3.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



Ну тебе же уже сказали:

Цитата(DemoCode @ 24.3.2006, 19:08 Найти цитируемый пост)
Если без тэгов, так
$text = strip_tags ($text);




--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Alek74
Дата 24.3.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Ерунда какаята получаеться. Выводит почему-о с тегами.
Код

$content = file_get_contents($dir);
$content = htmlspecialchars($content, ENT_QUOTES);
$content = strip_tags($content);
echo $content;


Все, понял.
Надо зарезать

$content = htmlspecialchars($content, ENT_QUOTES);

Пардон, не увидел сообщение снизу.

Это сообщение отредактировал(а) Alek74 - 24.3.2006, 20:27
--------------------
---------------------------------- «Филисофия жизни ©»  ---------------------------------- 
PM MAIL   Вверх
Aliance
Дата 24.3.2006, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 2
Всего: 137



Код

$content = file_get_contents($dir);
$content = strip_tags($content);
echo $content;

PM MAIL WWW ICQ Skype   Вверх
Alek74
Дата 24.3.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Это все не выход. Нужно сконвертировать html в txt.

Объясню зачем.

У меня в локальной сети довольно большая библиотека. Более 25 тыс+ 4 раза по столько не сортировано файлов html. Меня просят сделать возможность скачивать файлы в txt формате для КПК.

Вот и нужно сделать конвертацию на лету.
--------------------
---------------------------------- «Филисофия жизни ©»  ---------------------------------- 
PM MAIL   Вверх
Ciber SLasH
Дата 24.3.2006, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(Alek74 @ 24.3.2006, 20:32 Найти цитируемый пост)
Это все не выход. Нужно сконвертировать html в txt.

Тогда бери ту функцию (html_to_text) и дорабатывай — добавляй нужные реги для преобразования.

А вообще чем не устраивает последний предложенный вариант? Преобразовал файл, добавь ещё создание нового файла и запиши в новый файл преобразованный текст.

Это сообщение отредактировал(а) Ciber SLasH - 24.3.2006, 21:10
PM   Вверх
Alek74
Дата 24.3.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Так последний вариант преобразует в текст без форматирования. Попробу почитать такой текст. Можно конечно попробовать преобразовыват по построчно . И так же его записать построчно в файл.


Код

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


Причем заголовок выводиться как часть текста файла:
Цитата

Сергей Садов. Ответ (Баймер) Сергей Садов Ответ (Баймер).


Жирно выделен заголовок.

Это сообщение отредактировал(а) Alek74 - 24.3.2006, 22:18
--------------------
---------------------------------- «Филисофия жизни ©»  ---------------------------------- 
PM MAIL   Вверх
Alek74
Дата 24.3.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Может есть готовое решение для конвертации. Или я просто не правильно выбрал подход для решения проблемы?
--------------------
---------------------------------- «Филисофия жизни ©»  ---------------------------------- 
PM MAIL   Вверх
ZlojEzh
Дата 25.3.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 2
Всего: 15



PM MAIL ICQ   Вверх
Serkys
Дата 26.3.2006, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 2
Всего: 22



В php5 есть функция htmlspecialchars_decode, она делает то, что тебе нужно.
Вот моя самописная (для себя делал, сейчас подправил немного):
Код

function input_check_repeat($text) {
  $text=str_replace('&amp;', '&', $text);
  $text=str_replace('&quot;', '"', $text);
  $text=str_replace('&lt;', '<', $text);
  $text=str_replace('&gt;', '>', $text);
  $text=str_replace('<br />', "/r/n", $text);
  $text=str_replace('<br>',"/r/n", $text);
  return $text;
};

Делал её для действия, обратного nl2br() и htmlspecialchars().

З.Ы. При первом взгляде на этот топик возникает ощущение, что никто не вдумался в вопрос, но все сразу бросились отвечать, ссылаясь на некорректность вопроса. Такое ИМХО.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.