Forum Webscript.Ru

Программирование => PHP => Тема начата: Foshvad от 21 Апреля 2002, 00:16:39

Название: Разбиение длинных слов в сообщении
Отправлено: Foshvad от 21 Апреля 2002, 00:16:39
Я правльно понимаю, что если если мне надо разбивать в сообщении только те слова, длина которых больше заданной, то wordwrap тут не моможет?
С третьим ключем 1 он везде вставляет символ разбиения, а без не трогает длинные слова.

Можно что-то придумать попроще, чем


$words = explode(\' \',$comment);
for ($ii=0;$iiif (strlen($words[$ii])>$max_lenght) {$words[$ii] = wordwrap ($words[$ii], $max_lenght, \' \', 1);}
}
Название: Разбиение длинных слов в сообщении
Отправлено: Макс от 21 Апреля 2002, 00:32:28
function break_long_words($source_text,$lng)
{
   $regExp=\'/(\\S{\'.$lng.\',})/ei\';
   $res_text=preg_replace($regExp,"wordwrap(\'\\\\1\',$lng,\'\\n\',1)",$source_text);
   return $res_text;
}
Название: Разбиение длинных слов в сообщении
Отправлено: Foshvad от 21 Апреля 2002, 00:37:33
ну это же реги.... это же медленне! Или нет?
Название: Разбиение длинных слов в сообщении
Отправлено: Макс от 21 Апреля 2002, 01:16:44
Угу.
Раз в 5 - 20.

Кстати в worwrap есть баг.
Вот пример (взял с кода чата с php.spb.ru):


PS
Вроде для тех же целей можно chunk_split() использовать, но я ее не использовал - пока не знаю.
Название: Разбиение длинных слов в сообщении
Отправлено: Foshvad от 21 Апреля 2002, 01:20:04
Ага! Точно! Я на этот баг тоже наталкивался. Вроде в 4.2 исправили, но я не ставил, не знаю
Название: Разбиение длинных слов в сообщении
Отправлено: Dm от 21 Апреля 2002, 01:51:28

function word_wrap($s,$n,$br) {
   $len=strlen($s);
   $i=$n;
   $m=substr($s,0,$n);
   while($i<$len) {
      $m.=$br.substr($s,$i,$n);
      $i+=$n;
   }
   return $m;
}
?>

начиная с php4.1.1 этот баг исправлен
Название: Разбиение длинных слов в сообщении
Отправлено: Foshvad от 02 Июля 2002, 11:16:13
2Dm: то есть в 4.1.1 и выше wordwrap вставляет разделитель только в слова, длина которых больше заданной? Так?