Последни 100 симовла проблемче...

oniq

Registered
��Имам код, който ми вади 100 символа от бд на някой дълаг текст, но когато започне да показва ... ми излиза некво гадно ироглифче..



Как се оправя това нещо? :lol:


Използвам този код.


Код:
function lasts($post_text, $simbol_text) {
if (strlen($post_text)>$simbol_text)
{$points='...';}
else
{$totchkit='';}
return substr($post_text,0 , $simbol_text).$tpoints;
}
echo".lasts($d[new], 120).";
 
Имам го UTF-8 :? :?

Код:
define("HOST","localhost");
define("USER","root");
define("DBPASS","*****");
define("DBNAME","****");

// connect db //
$con = mysql_connect(HOST, USER, DBPASS);
mysql_select_db(DBNAME, $con) or die (mysql_error());
mysql_query("SET NAMES UTF8");
// end connect //
 
оправи си енкондинга/чарсета в базатаданни.
Ако работиш с utf-8 пробвай нещо от тоя сорт:

function utf8_substr($str,$from,$len)
{
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}

$dom = strlen($row['blabla']) > 32 ? utf8_substr($row['blabla'],0,32) . "..." :$row['blabla'];
echo $dom;


мисля, че няма да имаш този проблем, или друг вариант е да ползваш U
 
MontefuckeR каза:
оправи си енкондинга/чарсета в базатаданни.
То това ясно! :D
ПОгледни в база-данни как се записват данните.Там нормално ли е?
 
проблема е с substr

function lasts($post_text, $simbol_text) {
if (strlen($post_text)>$simbol_text)
{$points='...';}
else
{$totchkit='';}
return mb_substr($post_text,0 , $simbol_text,"utf-8").$tpoints;
}
echo".lasts($d[new], 120).";
:)
 
всъщност може и strlen да го направиш mb :)

function lasts($post_text, $simbol_text) {
if (mb_strlen($post_text,"urf-8")>$simbol_text)
{$points='...';}
else
{$totchkit='';}
return mb_substr($post_text,0 , $simbol_text,"utf-8").$tpoints;
}
echo".lasts($d[new], 120).";
 

Back
Горе