php Smarty里面truncate 类似的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Smarty里面truncate 类似的用法相关的知识,希望对你有一定的参考价值。

php 里面有truncate类似的函数吗
也就是用来显示超过多少个字符后用..代替的函数
substr($string,$start,$length) 后面自己连接着...吗
//======上面解决了=====
<?php

$a="你是我的啊,我是谁的啊";

echo substr($a,0,7)."...";
?>
得到的结果是: 你是我?..
请问为什么后面有个?
为什么它截取半个字就会出现?

因为汉字是占2个byte的。0-7截取的是3个汉字加半个汉字。
才会有?出现。
参考技术A 看看你的phpinfo是否开启了mb_string函数,
如果可以的话可以使用mb_substr
参考技术B 因为smarty的truncate默认只支持单字节字符,汉字是双字节的,所以它会截取不准,可以自己写一个,很简单(或者去网上搜一下,很多类似的文章) 参考技术C MB库比较好用

smarty函数

smarty里面包含两种函数:

一种是普通函数,一种是块函数。

用smarty模板从数据库读取数据在前台显示数据:

.php页面:

<?php
require "../DBDA.class.php";
require "../init.inc.php";


$db = new DBDA();
$sql = "select * from info";
$arr = $db->query($sql);

$smarty->assign("shuju",$arr);



$smarty->display("test.html"); 

.html页面:

<body>

<table width="100%" border="1">
    <tr>
        <td>代号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>民族</td>
        <td>生日</td>
    </tr>
    
    <{foreach $shuju as $v}>
    <tr>
        <td><{$v[0]}></td>
        <td><{$v[1]}></td>
        <td>
            <{if $v[2]}><{else}><{/if}>
        </td>
        <td><{$v[3]}></td>
        <td><{$v[4]}></td>
    </tr>
    <{/foreach}>
    
</table>

</body>
</html>

 

<{ literal }>标签:

只要是被<{ literal }>括起来的含有定界符的就不会被解析掉。

<{literal}>
<{foreach $shuju as $v}> <tr> <td><{$v[0]}></td> <td><{$v[1]}></td> <td> <{if $v[2]}><{else}><{/if}> </td> <td><{$v[3]}></td> <td><{$v[4]}></td> </tr> <{/foreach}>

<{/literal}>

 

以上是关于php Smarty里面truncate 类似的用法的主要内容,如果未能解决你的问题,请参考以下文章

PHP项目SmartySmarty截取字符串方法truncate

php truncate函数能截取不同字体的字吗

php页面中的包含文件用相对路径(require_once("./smarty/smarty.class.php"))出错了怎么解决

PHP——smarty模板(第一天)

php smarty 配置

Smarty3——复合变量修饰器输