Jump to content
php.lv forumi

uft-8 with substr


Tvinky

Recommended Posts

Sveicināti! Vāru sakot izveidoju skriptu priekš tā, lai varētu sadalīt tekstu un izvadīt linku "lasīt tālāk". Skripts tikai veidots priekš lv/ru/en valodām. Kļūdas sāka rādīties pie ru... Un tā lūk mans kods:

 

<?php
$teksts = "Какбы всё ок! Какбы всё ок! Какбы всё ок! (Tā turpinās līdz pārsniedz 400 simbolus)";

if (strlen(@$teksts) >= 400)
	{
		 	$teksts = stripslashes($teksts);
			echo substr($teksts,0,400);
			echo "  ";
	echo "<a href=#>Далще...</a>";
	 	}
?>

 

Un izvadot, es iegūstu:

 

Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы всё ок! Какбы КаР Далще...

 

Kā redzat, pēdējais vārds vispār jocīgs. Vietā, lai tur būtu vārds "всё" viņš izdod kaut kādus ķeburus.

 

P.S Atbildi biju meklējis foruma meklēšanā, bet neatradu. (Tas laikam ir tāpēc, ka tiek sadalīts burts uz pusēm, jo utf laikam aizņem vairākus baitus - vismaz kaut ko tamlīdzīgu dzirdēju).

Kādam ir ideja, kā ar šo cīnīties? Paldies, iepriekš.

Link to comment
Share on other sites

function utf8_strlen($str) {
  return preg_match_all('/[\x00-\x7F\xC0-\xFD]/', $str, $dummy);
}

function utf8_substr($str,$start) {
  preg_match_all("/./u", $str, $ar);

  if(func_num_args() >= 3) {
 $end = func_get_arg(2);
 return join("",array_slice($ar[0],$start,$end));
  } else {
 return join("",array_slice($ar[0],$start));
  }
}

Link to comment
Share on other sites

×
×
  • Create New...