За последние 24 часа нас посетили 20897 программистов и 1631 робот. Сейчас ищет 1481 программист ...

Очистка мусора при конвертации DOC->HTML

Тема в разделе "Регулярные выражения", создана пользователем SergeyRock, 18 май 2011.

  1. SergeyRock

    SergeyRock Активный пользователь

    С нами с:
    18 май 2011
    Сообщения:
    10
    Симпатии:
    0
    Здравствуйте!
    Нашел очень хороший класс для работы с сабжем. Называется jevix.
    Но он не корректно (на мой взгляд) обрабатывает значения, заключенные внутри тегов.
    Например, если дано:
    Код (Text):
    1. <span>Привет </span><span> php.ru</span>
    То после обрубания этих тегов получается:
    Код (Text):
    1. Приветphp.ru
    Удаляются крайние пробелы внутри тегов.

    Идея такая, чтобы предварительно с помощью регулярок вынести пробел за тег:
    Код (Text):
    1. <span>Привет</span>  <span>php.ru</span>
    Препятствует то, что тег может содержать атрибуты (необходимые). Например:
    Код (Text):
    1. <p class=MsoNormal style='margin-top:3.0pt;text-indent:17.85pt;line-height:122%;background:white;text-autospace:none'>
    2.     <span style='font-size:11.5pt;line-height:122%;color:black;letter-spacing:-.2pt'>2. Быть </span><span style='font-size:11.5pt;line-height:122%;color:black;letter-spacing:.3pt'>доброжелательным, не</span><span style='font-size:11.5pt;line-height:122%;color:black;letter-spacing:-.2pt'> оскорблять </span><span style='font-size:11.5pt;line-height:122%; color:black;letter-spacing:.3pt'>учеников</span><span style='font-size:11.5pt; line-height:122%;color:black;letter-spacing:-.2pt'>, не возмущаться их </span><span style='font-size:11.5pt;line-height:122%;color:black;letter-spacing:.3pt'>незнанием</span><span style='font-size:11.5pt;line-height:122%;color:black;letter-spacing:-.2pt'> и непониманием. </span><span style='font-size:11.5pt;line-height:122%;color:black; letter-spacing:.3pt'>Если</span><span style='font-size:11.5pt;line-height:122%; color:black;letter-spacing:-.2pt'> большинство учащихся</span><span style='font-size:11.5pt;line-height:122%;color:black'> <span style='letter-spacing: .2pt'>не </span><span style='letter-spacing:.3pt'>понимает</span><span style='letter-spacing:.2pt'> или</span> <span style='letter-spacing:.3pt'>затрудняется, то ошибку надо искать</span> <br> в формах <span style='letter-spacing:.1pt'>и способах организации</span> их деятельности.</span>
    3. </p>
    Поэтому обычной заменой типа "<span> " на " <span>" не обойдешься.

    Помогите с регуляркой
     
  2. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    у вас на входе текст HTML?

    тогда подправьте сам jevix, чтобы он не резал пробелы
     
  3. SergeyRock

    SergeyRock Активный пользователь

    С нами с:
    18 май 2011
    Сообщения:
    10
    Симпатии:
    0
    На входе HTML. Версия для php jevix-1.1 (http://code.google.com/p/jevix/).
    Не могу найти где это он делает.
    Га сайте http://jevix.ru/ обрабатывает текст нормально. Может там perl-версия используется - не знаю. На php-версии описанная выше ситуация..
     
  4. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    эх всетаки надо заплатку, рефакторинг слишком сложен.

    перед отправкой надо повесить фильтр на текст

    PHP:
    1. <?php
    2.  
    3. $text = str_replace(array(' <','> '),array(chr(38).'nbsp;<','>'.chr(38).'nbsp;'),$text);
    4.  
    5. $res = $jevix->parse($text, $errors);
    6.  
    ps chr(38) введен из за кривости форума. Это символ &
    psps версия с chr(38) рабочая и проходит bbcode парсер кривых форумов
    pspsps
    [​IMG]
     
  5. SergeyRock

    SergeyRock Активный пользователь

    С нами с:
    18 май 2011
    Сообщения:
    10
    Симпатии:
    0