Forum Webscript.Ru
Программирование => PHP => Тема начата: 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);}
}
-
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;
}
-
ну это же реги.... это же медленне! Или нет?
-
Угу.
Раз в 5 - 20.
Кстати в worwrap есть баг.
Вот пример (взял с кода чата с php.spb.ru):
PS
Вроде для тех же целей можно chunk_split() использовать, но я ее не использовал - пока не знаю.
-
Ага! Точно! Я на этот баг тоже наталкивался. Вроде в 4.2 исправили, но я не ставил, не знаю
-
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 этот баг исправлен
-
2Dm: то есть в 4.1.1 и выше wordwrap вставляет разделитель только в слова, длина которых больше заданной? Так?