来源:6-9 block functions区块函数插件的定义和使用

王利亚1990

2014-08-21 15:11

老师,是不是截取的字符串为27个而不是29个,貌似总是少两个???有这种情况吗???

写回答 关注

3回答

  • PengCheng
    2014-08-25 10:02:58

    代码没错。php的substr对英文数字有效,对汉字截取不准。


    一个汉字在utf8状态下占三个字节,在gbk占两个字节,如果用substr截取的画,就得判断编码,然后再算出字节数。


    也可以按照php的 mbstring扩展,使用mb_substr  这样就精确多了。相关内容可以百度一下。


  • PengCheng
    2014-08-21 15:26:23

    贴一下你的代码

  • 王利亚1990
    2014-08-21 15:35:39

    {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;

    }

    ////////////////

MVC架构模式分析与设计

通过学习MVC理论知识,由浅入深带您实现人生第一个MVC框架

82461 学习 · 954 问题

查看课程

相似问题