Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Текст в таблицах.
Показать сообщение отдельно

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


vasketsov
Я вот такой вот скриптик (вернее часть PHP-класса) написал -- строки свыше 60 символов разбивает на части, но всё это с сохранением форматирования. Переносы по возможности делает по словам:

Код: Выделить весь код
class page
{

//...

function _do_code_brs( $str )
{
 * *// Суть *этого манёвра, что бы спецсимволы, заменённые на их коды
 * *// (< на &lt; *итп) опять стали односимвольными -- что б прально
 * *// работал подсчёт символов в строке.
 * *$tmp_chars = array( "\x05", "\x06", "\x07", *"\x08" *);
 * *$codes * * = array( '&lt;', '&gt;', '&amp;', '&quot;');
 * *for( $i = 0; $i < count( $codes ); ++$i )
 * * * *$str = str_replace( $codes[$i], $tmp_chars[$i], $str );

 * *while( preg_match( "/[^\n\x01]{61,}/", $str ) )
 * * * *$str = preg_replace( "/([^\n\x01]{61,})/e",
 * * * * * * * * * * * * * * '$this->_do_code_brs_(\'\\1\')', $str );

 * *for( $i = 0; $i < count( $codes ); ++$i )
 * * * *$str = str_replace( $tmp_chars[$i], $codes[$i], $str );

 * *return str_replace( "\x01", '<img src="/trash/br.gif">', $str );
}

function _do_code_brs_( $str )
{
 * *preg_match( '/^(.{0,60})(\S*)(.*)$/', $str, $f );
 * *preg_match( '/ */', $str, $offset );
 * *if( $f[2] != '' )
 * *{
 * * * *preg_match( '/\S*$/', $f[1], $last_word );
 * * * *if( $last_word[0] != $f[1] )
 * * * * * *return
     * * * * * *substr( $f[1], 0, strlen( $f[1] ) - strlen( $last_word[0] ) ) 
 * *     * * * *. "\x01\n" . $offset[0] . $last_word[0] . $f[2] . $f[3];
 * *}
 * *preg_match( '/ */', $str, $offset );
 * *return $f[1]."\x01\n".$offset[0].$f[2].$f[3];
 * *echo '<pre>'; print_r( $f );
 * *return substr( $str, 0, 60 );
}

// ...

};
Если кому-нибудь нуно могу дать вариант на perl'е. Работает как часы. Причём, гораздо лучше чем простое
Код: Выделить весь код
$str =~ s/([^\n]{60})([^\n])/$1\n$2/;
Добавлено:

Но, вообще, я решил применять решение проще -- сделать шрифт для кода меньше, и весь код, который я собираюсь публиковать на страницы сразу (вручную) форматировать по ширине на 60 символов -- всё прекрасно смотрится даже в 640x480.

-------
http://ivank.ru


Отправлено: 13:46, 11-04-2002 | #8

Название темы: Текст в таблицах.