老師,是不是截取的字符串為27個(gè)而不是29個(gè),貌似總是少兩個(gè)???有這種情況嗎???

王利亞1990
2014-08-21
3 回答
舉報(bào)
0/150
提交
取消
老師,是不是截取的字符串為27個(gè)而不是29個(gè),貌似總是少兩個(gè)???有這種情況嗎???
2014-08-21
舉報(bào)
2014-08-25
代碼沒錯(cuò)。php的substr對英文數(shù)字有效,對漢字截取不準(zhǔn)。
一個(gè)漢字在utf8狀態(tài)下占三個(gè)字節(jié),在gbk占兩個(gè)字節(jié),如果用substr截取的畫,就得判斷編碼,然后再算出字節(jié)數(shù)。
也可以按照php的 mbstring擴(kuò)展,使用mb_substr 這樣就精確多了。相關(guān)內(nèi)容可以百度一下。
2014-08-21
貼一下你的代碼
2014-08-21
{testblock change='true' length=3}
{$str11}
{/testblock}
///////
<?php
require('../smarty/Smarty.class.php');
$smarty=new Smarty();
//五配置兩方法
$smarty->left_delimiter="{";
$smarty->right_delimiter="}";
$smarty->template_dir="tpl";
$smarty->cache_dir="cache";
$smarty->compile_dir="template_c";
$smarty->assign('str11','01234567890123456789');
$smarty->display('block.tpl');
/////////////////////
<?php
function smarty_block_testblock($params,$content)
{
$change=$params['change'];
$length=$params['length'];
if($change=='true')
{
$content=str_replace(0,'A',$content);
}
$content=substr($content,0,$length);
return $content;
}
////////////////