Reply to this topicStart new topicStart Poll

Страницы: (1) 1 
alex220278
дата: [ i ]
  • *
  • Новичок
  • Репутация: 9
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Я, являюсь администратором сайта Российской академии наук.
Научные сотрудники, постоянно приносят мне материал, для опубликации в формате MS Word.
Все их статьи содержат огромное кол-во таблиц и форматный текст.

Моя задача переконвертировать все это в HTML. Но после конвертирования, документ содержит огромное кол-во ненужных тегов.

Для этого, я использую простенький PHP скрипт.

пример:
CODE
<?php
# В $text вставляю кашу, в которой сохраняет Word

$text='
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:
.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
 <td width=319 valign=top style='width:239.25pt;border:solid windowtext 1.0pt;
 mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
 <p class=MsoNormal><span style='color:#993300'>Всякая <span class=SpellE>хрень</span>
 1<o:p></o:p></span></p>
 </td>
 <td width=319 valign=top style='width:239.3pt;border:solid windowtext 1.0pt;
 border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
 solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
 <p class=MsoNormal>Всякая <span class=SpellE>хрень</span> 3</p>
 </td>
</tr>
</table>
';

# теперь фильтруем с помошью функции strip_tags
echo strip_tags($text, '<table><td><tr><br><b>');# задаю теги, которые нужно оставить
?>

Так вот, после обработки этой каши, таблици все равно, остаются привязанны к стилю.
В этоге, конечно текст сокращается, но все равно не так, как хотелось бы. Приходится все вычищать вручную.
Мне надо, чтобы например вместо:<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
оставалось просто <tr>
Подскажите пожалуйста способы борьбы с этим?

зы: Может есть, уже готовые проги, не обязательно скрипты?

barrakuda
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 69
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Мне думается, можно так: preg_replace("/style=[^<]*>/", ">", $text);
Использовать эту функцию и регулярные выражения.
alex220278
дата: [ i ]
  • *
  • Новичок
  • Репутация: 9
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Это еще одна проблема с которой я обращаюсь на форум и сам-же опубликовываю ответ.

Вот, может кому пригодится:

CODE
<?php

$badTags = Array( 'class', 'style' );

$text = isSet( $_POST[ 'text' ] ) ? $_POST[ 'text' ] : '';
if ( ini_get( 'magic_quotes_gpc' ) )
    $text = stripSlashes( $text );

$text = preg_replace_callback( '/<.*?>/s', 'clb1', $text );

function clb1( $a ) {
    return preg_replace( '/\s+/', ' ', preg_replace_callback( '/(\S*)=(("[^"]*")|(\'[^\']*\')|([^\s>]*))/s', 'clb2', $a[ 0 ] ) );
} // clb().

function clb2( $a ) {
    return in_array( strToLower( $a[ 1 ] ), $GLOBALS[ 'badTags' ] ) ? '' : $a[ 0 ];
} // clb2().


?>
<form method="post">
 <textarea name="text" rows="15" cols="75"><?php print htmlSpecialChars( $text ); ?></textarea><br />
 <input type="submit" value="Clear" />
</form>
<?php
 print '<hr>';
 highlight_file( __FILE__ );
?>


Вот и весь скрипт. bleh.gif

Можно закрывать тему на замочек.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)

Страницы: (1) 1

Reply to this topic Fast ReplyStart new topicStart Poll0


Рекомендуем почитать также топики:

ICQ 6

Проблема с памятью в Висте

Java

Pinnacle Studio Plus 11

Нереальный IP




>