сама функция str_split() с кириллицей в utf-8 не дружит, взял функцию из комментариев в php.net, так же тут мне советовали ее же.
Но то ли у меня руки из ануса, то ли функция реально неадекватно себя ведет
насколько я понял, за количество символов, на которые будет разбиваться строка, отвечает переменная $split
допустим, я использую свой же код из 39 поста, в самом начале втыкаю эту функцию, и присваиваю $split значение 10 (для примера).
<?
function utf8_str_split($str) {
// place each character of the string into and array
$split=10;
$array = array();
for ( $i=0; $i < strlen( $str ); ){
$value = ord($str[$i]);
if($value > 127){
if($value >= 192 && $value <= 223)
$split=2;
elseif($value >= 224 && $value <= 239)
$split=3;
elseif($value >= 240 && $value <= 247)
$split=4;
}else{
$split=1;
}
$key = NULL;
for ( $j = 0; $j < $split; $j++, $i++ ) {
$key .= $str[$i];
}
array_push( $array, $key );
}
return $array;
}
$text = 'этот текст надо разделить на страницы';
$symb_onpage = 10; # количество символов на страницу
$page = (isset($_GET['page'])) ? abs(intval($_GET['page'])) : 0; # номер страницы, дописывать в адресную строку (если не 0)
$arr = utf8_str_split($text,$symb_onpage);
if(array_key_exists($page,$arr))
{
if(trim($arr[$page]) !== ''){echo trim($arr[$page]);}
} else {echo 'Страницы не существует!';}
# Навигация
if(count($arr) !== 0 && count($arr) !== 1){
echo '<br/>';
if($page != 0){echo '<a href="?page='.($page-1).'">Назад </a>';echo '['.($page+1).']';}
if($page != count($arr)-1){echo '<a href="?page='.($page+1).'"> Вперед</a>';}
}
?>
а в ответ получаю разделенный по 1 символу массив. (вместо 10, т.е. от моих телодвижений ничего не изменилось)
в чем дело то?
Изменил: KOZZ (01.10.2010 / 07:14)