Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Всем привет! Направьте, пожалуйста, на путь истинный в решении такой вот задачки. Есть текстовый файл. Необходимо его преобразовать в правильный html код. Т.е. все ссылки и email'ы привести к html записи, если перед строкой есть пустая строка, значит это начало параграфа... соответственно, если пустая строка после текста, то это конец параграфа, если параграф заканчивается знаками "-" или "=", то этот параграф должен быть заголовком первого уровня. Если параграф начинается с числа, то он должен стать заголовком уровня равному этому числу. А если параграф начинается со звездочки, то это немаркированный список. Помогите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 07:22 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Excubitor, читайте файл(fread), ищите то что вам нужно(nl2br(),preg_replace()) и преобразовывайте в html сущности и теги. в чем конретно проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 07:34 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
r u, Ну тем, что, к сожалению, не все так просто... Например строка: Векторный резонатор: гипотеза и теории ====================================== должна стать: <h1>Векторный резонатор: гипотеза и теории</h1> или: ## Погранслой искажает вихрь по мере распространения сигнала должна стать: <h2>Погранслой искажает вихрь по мере распространения сигнала</h2> Чем тут preg_replace() может помочь? Пока что я из заданного могу только открыть файл (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 07:49 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Как-то так Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. Результат: Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 08:21 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
FatalPHPError, Огромное спасибо вам! Если вам не сложно расскажите, пожалуйста, что значат регулярки /(.*?)\n=+/m и /^##\s*(.*)/m ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 08:26 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
А используя preg_replace() возможно решить остальные части задачи? Например http://ya.ru Резонатор вращает ультрафиолетовый лазер Должна стать: <a href=" http://ya.ru">Резонатор</a> А вот это: Примесь, как бы это ни казалось парадоксальным, сингулярно возбуждает экситон, при этом дефект массы не образуется. Гидродинамический удар квантуем. Взвесь пространственно ускоряет кварк - все дальнейшее далеко выходит за рамки текущего исследования и не будет здесь рассматриваться. должно стать: <p>Примесь, как бы это ни казалось парадоксальным, сингулярно возбуждает экситон, при этом дефект массы не образуется.</p> <p>Гидродинамический удар квантуем. Взвесь пространственно ускоряет кварк - все дальнейшее далеко выходит за рамки текущего исследования и не будет здесь рассматриваться.</p> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 08:42 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Например http://ya.ru Резонатор вращает ультрафиолетовый лазер Должна стать: <a href=" http://ya.ru">Резонатор</a> Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 09:08 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
FatalPHPError, Обалдеть... Спасибо! С удовольствием поставил бы вам пива ) Блин, как такие забубенные регулярки читать? Я привык то к простым, а сейчас пытаюсь разобраться в ваших и уже запутался во всех этих квантификаторах... Ну подскажите пожалуйста, что это регулярное выражение значит? |^(https?://.+?)\s(.+)|m И быть может, я уже не буду мучить других людей (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 09:39 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Excubitorкак такие забубенные регулярки читать? Тынц. Много букв, но довольно подробно описано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 11:51 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
vkle, Эм... я почти все это прочитал уже... от того, что я теперь понимаю большинство символов в вышестоящих регулярок меняется мало. Как ее составить? Небольшую (достаточную, чтобы пропарсить урл) я и сам могу написать, а вот те что приводятся в этой ветке сложноваты для моего понимания. Мне бы понять как ее составили, чтобы на остальные условия задачи я сам уже писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 11:55 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Excubitor, Начните разбор с понимания каждого символа в регулярке. Excubitorчто это регулярное выражение значит? |^(https?://.+?)\s(.+)|m Откройте мануал и давайте читать по буквам... :-) Здесь символ | - ограничитель регулярного выражения. Довольно часто используют слеш, но допустимы и другие символы. ^ - начало строки Скобки выделяют часть строки, которая будет сохранена в результате и может быть использована позже. https? - здесь часть строки "http" проверяется как есть, а вопросительный знак указывает, что символ "s" может быть, а может и не быть. :// - это проверяется как есть .+ - точка означает "любой символ", а плюс означает "один или более". \s - любой пробельный символ. Таким образом, эта часть регулярного выражения возьмет текст строго в начале строки, начинающийся на http:// или https://, за которым идут один или более каких-то символов до ближайшего пробела. Этот фрагмент текста доступен будет в выражении для замены как "\1" (можно прочитать как "первый найденный фрагмент"). После пробела идет (.+) - эта часть выражения возьмет любые один или более символов. Этот фрагмент будет вторым. Про модификатор m прочтите уж в мануале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:26 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
vkle, Вот спасибо огромное ))) Стало сразу все понятнее! Жизнь стала чуть легче, а сон менее крепким.. Стало легче читать чужое... осталось научиться писать свое. Если взять часть задачи про параграфы. авторА вот это: Примесь, как бы это ни казалось парадоксальным, сингулярно возбуждает экситон, при этом дефект массы не образуется. Гидродинамический удар квантуем. Взвесь пространственно ускоряет кварк - все дальнейшее далеко выходит за рамки текущего исследования и не будет здесь рассматриваться. должно стать: <p>Примесь, как бы это ни казалось парадоксальным, сингулярно возбуждает экситон, при этом дефект массы не образуется.</p> <p>Гидродинамический удар квантуем. Взвесь пространственно ускоряет кварк - все дальнейшее далеко выходит за рамки текущего исследования и не будет здесь рассматриваться.</p> регулярка должна получиться что-то вроде: $f = preg_replace ('/\n.*\n/', '<p>\1</p>', $f); или может даже: $f = preg_replace ('/^(\n.*\n)/m', '<p>\1</p>', $f); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:38 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
ExcubitorЕсли взять часть задачи про параграфы. как только вы сами для себя определите четко что такое параграф - так сразу и регулярку напишите для этого. у вас - параграф это текст перед которым есть два перевода строки или начало всего текста. так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:45 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
r u, Мда... вы правы... Так? Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 13:01 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Блин... как то она не так работает (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 15:40 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Вроде, в первом посте есть определение параграфа:Excubitorесли перед строкой есть пустая строка, значит это начало параграфа... соответственно, если пустая строка после текста, то это конец параграфаТеперь определим, что такое пустая строка. Предположим, что это строка, где нет никаких символов кроме перевода строки. В простейшем случае два перевода строки подряд ("\n\n") будет пустой строкой. Не забываем про виндовый и маковский варианты, если они потенциально могут быть в тексте. Возможно, Вы захотите расширить понятие пустой строки и на строки, состоящие целиком из невидимых символов - пробелов и табуляции. Таким образом, вероятно, в самом простейшем случае параграф можно распознать/взять приблизительно каким-то таким выражением: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 17:30 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
vkle, Я думал насчет такого варианта... не получилось, не помню уже почему. Все сделал в общем, без вас бы затянулось это на долго-долго. В принципе, может кому то мои сегодняшние мучения пригодятся, так что выведу, что получилось. Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. конечно косяков хватает, но я, буквально сегодня с регулярными выражениями познакомился, так что извиняйте. Спасибо всем за помощь. Хотя завтра наверное придется до ума доводить... а именно, чтобы работало под любым текстовым документом, а то иногда все таки приколы случаются ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 18:19 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Excubitor, Думаю, можно чуток соптимизировать код: http://ru2.php.net/manual/ru/function.preg-replace.php Если и pattern и replacement являются массивами , каждый элемент pattern будет заменен соответствующим элементом из replacement. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 18:31 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, пишется скрипт для наведения порядка в старых залежах научных статей, созданных ещё во времена весьма доисторические, в формате *.txt и в старых кодировках. Применять php имеет смысл в том случае, если вы хотите добавить такой "умный конвертор" к уже существующему веб-сайту. Если же вы планируете массовую обработку - я очень советую посмотреть в сторону написания скрипта для SED или AWK. Те же регулярки, но гораздо большее удобство при массированном применении и обработке файловых хранилищ. Стопроцентно работать для всех файлов оно не будет - если файл текстовый, и разукрашивался вручную такой вот типа псевдографикой - все случаи не охватите, можно будет лишь снизить объем ручной работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 19:03 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
vkleExcubitor, Думаю, можно чуток соптимизировать код: http://ru2.php.net/manual/ru/function.preg-replace.php Если и pattern и replacement являются массивами , каждый элемент pattern будет заменен соответствующим элементом из replacement. Хах... точно ) Спасибо! Завтра займусь. Ваша помощь неоценима ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 19:18 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
nscl, Спасибо за совет, но нет. Я просто прочитал задание и меня заинтересовало попробовать его сделать. Но если вдруг мне понадобится подобный конвертер - воспользуюсь вашим советом ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 19:21 |
|
||
|
Распарсить текстовый файл и сформировать HTML на его основе
|
|||
|---|---|---|---|
|
#18+
Как то надо переделать парсер email'a (( Дело в том, что в таком состоянии Код: php 1. Он начинает искать майл, если перед ним точка стоит (писал, чтобы проверить на одном файле, соответственно открыв другой, емайла он там не нашел) (( Пробовал, чтобы он пытался с пробела (использовал и \s, и \040, и ) все равно начинает парсить откуда-то с другого места, обычно за несколько слов до начала емайла) Смысл в том, чтобы парсер находил емайл в любой части документа. Не подскажите, что я упускаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 03:39 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38639689&tid=1462800]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 514ms |

| 0 / 0 |
