Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Опять парсинг MS-индусоида. Вложенные span - как найти закрывающий?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
LShark
Отправлено: 23 Февраля, 2013 - 09:44:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




Опять возникла проблема при парсинге и очистке MHT-файла, созданного MsWord.

Из него без проблем получаю html-файл-основу, но вот проблема - он переполнен всякими (не пытайтесь разбирать, это лишь пример):
Спойлер (Отобразить)


После злобной очистки текст очищается напрочь и из 400кб такого вот творения индусов из Мелкомягких получается практически не измененный 75кб документ.

Все бы гуд, но прроблема в том, что ЦВЕТ шрифта также засунут в <span> и при зачистке удаляется вместе с прочей ненужной разметкой мелкомягких.

Отсюда ВНИМАНИЕ!!! ( Улыбка ) вопрос:
Есть такой вариант (выстроено для облегчения понимания):
CODE (htmlphp):
скопировать код в буфер обмена
  1. <span (куча всякого текста) color:red'>
  2.   <span (куча всякого текста)>То, что надо оставить</span>
  3.   <span (куча всякого текста)>То, что надо оставить</span>
  4.   <span (куча всякого текста)>То, что надо оставить</span>
  5.   <span (куча всякого текста)>То, что надо оставить</span>
  6. </span> (который в начале color:red)...
  7.  

Как заменить такое на:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <font color=red>
  2.   <span (куча всякого текста)>То, что надо оставить</span>
  3.   <span (куча всякого текста)>То, что надо оставить</span>
  4.   <span (куча всякого текста)>То, что надо оставить</span>
  5.   <span (куча всякого текста)>То, что надо оставить</span>
  6. </font>
  7.  

Так как дальше все <span> и </span> просто удаляются, уменьшая размер файла, но не меняя результат вывода этого индусокода...

PS. Не имеет значения, что будет: <div style:...> </div> или <font color=...></font> на выходе.

(Отредактировано автором: 23 Февраля, 2013 - 09:53:29)



-----
Истина прежде всего в том, что...
 
 Top
etoYA
Отправлено: 23 Февраля, 2013 - 14:14:41
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_replace('#<span .*? color:(.*?)>\s(.*?)\r\n</span>#s', "<font color=$1>$2\r\n</font>", $content)

(Отредактировано автором: 23 Февраля, 2013 - 14:15:53)

 
 Top
LShark
Отправлено: 23 Февраля, 2013 - 14:46:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




Это сожрет до последнего спана, к сожалению, индусы столько спанов забодяжили, что там текст идет сплошняком.
Нужно именно найти, какой из /спанов закрывает тот, что с color:

В этом то и проблема...


-----
Истина прежде всего в том, что...
 
 Top
etoYA
Отправлено: 23 Февраля, 2013 - 15:00:42
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




LShark, тут как бы так и есть)
 
 Top
LShark
Отправлено: 23 Февраля, 2013 - 18:33:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




Увы, нет. Не так.

Посмотри то, что под спойлером. Как раз в самом низу там такой вариант - с колором.

Не забывай, что этот спан, закрывающий спан с колором - далеко не последний, их там еще туева хуча. Индусы, чо...
(Добавление)
Я, конечно, могу поступить иначе - не удалять полностью теги span, а просто вычистить их, превратив в <span> </span>, и только с цветом оставить, модифицировав их в <span style='font-color: red'>

Но это резко увеличит размеры полученного файла.


-----
Истина прежде всего в том, что...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB