timoshenkov
Новичок
вот код проверял на японском работает
взята вот от сюда
-~{}~ 29.11.06 07:50:
есть один минус эта функция разбивает html теги
к примеру
не подскажите как заставить эту функцию удилить потом или сразу такие "ляпы"?
-~{}~ 29.11.06 08:01:
добавил в конце регуляргу которая обратно слепит теги, но только если они это по краям
а есть возможность сразу запретить разрывать html теги?
Как исправить регуляргу не знаю
Не спрашивал бы
PHP:
function utf8_wordwrap($str, $width, $break,$cut = false){
if(!$cut){
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.',}\b#U';
} else {
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.'}#';
}
if(function_exists('mb_strlen')){
$str_len = mb_strlen($str,'UTF-8');
} else {
$str_len = preg_match_all('/[\x00-\x7F\xC0-\xFD]/', $str, $var_empty);
}
$while_what = ceil($str_len / $width);
$i = 1;
$return = '';
while ($i < $while_what){
preg_match($regexp, $str,$matches);
$string = $matches[0];
$return .= $string . $break;
$str = substr($str,strlen($string));
$i++;
}
return $return.$str;
}
взята вот от сюда
-~{}~ 29.11.06 07:50:
есть один минус эта функция разбивает html теги
к примеру
PHP:
$str='hello<br/>'
$str=utf8_wordwrap($str,6," ");
echo $str;
////////////////////
//выведет hello< br/>
не подскажите как заставить эту функцию удилить потом или сразу такие "ляпы"?
-~{}~ 29.11.06 08:01:
добавил в конце регуляргу которая обратно слепит теги, но только если они это по краям
PHP:
function utf8_wordwrap($str, $width, $break,$cut = false){
if(!$cut){
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.',}\b#U';
} else {
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.'}#';
}
if(function_exists('mb_strlen')){
$str_len = mb_strlen($str,'UTF-8');
} else {
$str_len = preg_match_all('/[\x00-\x7F\xC0-\xFD]/', $str, $var_empty);
}
$while_what = ceil($str_len / $width);
$i = 1;
$return = '';
while ($i < $while_what){
preg_match($regexp, $str,$matches);
$string = $matches[0];
$return .= $string . $break;
$str = substr($str,strlen($string));
$i++;
}
$str=$return.$str;
mb_regex_encoding(mb_detect_encoding($str));
$pattern = array('<'.$break, $break.'>', $break.'/>');
$replacement = array('<', '>', '/>');
for ($i=0; $i<sizeof($pattern); $i++) {
$str = mb_ereg_replace($pattern[$i], $replacement[$i], $str);
}
return $str;
}
а есть возможность сразу запретить разрывать html теги?
Как исправить регуляргу не знаю
Не спрашивал бы