文档章节

dedecms织梦获得首字母或拼音的方法,并实现文章列表按首字母归类

越野小生
 越野小生
发布于 2015/11/28 22:30
字数 669
阅读 60
收藏 4
点赞 0
评论 0

方法一,织梦默认有这个函数,在include/inc/inc_fun_funAdmin.php中.即SpGetPinyin()

但他只能得到全拼,没法得到首字母,

用法举例

$pingyin=GetPinyin($row['title'],0,1);
$a=substr(GetPinyin($row['title']),0,1);//得到拼音首字母


方法二,如果你只想得到首字母,不需要全拼,还可以用以下函数得到首字母

if (ord($row['title'])>128) { //汉字开头

 $letter=getfirstchar2($row['title']);

}else if(ord($row['title'])>=48 and ord($row['title'])<=57){ //数字开头

 $letter=iconv_substr($title,0,1,'utf-8');

}else if(ord($row['title'])>=65 and ord($row['title'])<=90){ //大写英文开头

$letter=iconv_substr($row['title'],0,1,'utf-8');


}else if(ord($row['title'])>=97 and ord($row['title'])<=122){ //小写英文开头

 $letter=iconv_substr($row['title'],0,1,'utf-8');
$letter=strtoupper($letter);//字母转换成大写
}

print_r($letter);exit;
 function getfirstchar2($s0){
$s=iconv("UTF-8","gb2312", $s0); 
$asc=ord($s{0})*256+ord($s{1})-65536; 
if($asc>=-20319 and $asc<=-20284)return "A"; 
if($asc>=-20283 and $asc<=-19776)return "B"; 
if($asc>=-19775 and $asc<=-19219)return "C"; 
if($asc>=-19218 and $asc<=-18711)return "D"; 
if($asc>=-18710 and $asc<=-18527)return "E"; 
if($asc>=-18526 and $asc<=-18240)return "F"; 
if($asc>=-18239 and $asc<=-17923)return "G"; 
if($asc>=-17922 and $asc<=-17418)return "H"; 
if($asc>=-17417 and $asc<=-16475)return "J"; 
if($asc>=-16474 and $asc<=-16213)return "K"; 
if($asc>=-16212 and $asc<=-15641)return "L"; 
if($asc>=-15640 and $asc<=-15166)return "M"; 
if($asc>=-15165 and $asc<=-14923)return "N"; 
if($asc>=-14922 and $asc<=-14915)return "O"; 
if($asc>=-14914 and $asc<=-14631)return "P"; 
if($asc>=-14630 and $asc<=-14150)return "Q"; 
if($asc>=-14149 and $asc<=-14091)return "R"; 
if($asc>=-14090 and $asc<=-13319)return "S"; 
if($asc>=-13318 and $asc<=-12839)return "T"; 
if($asc>=-12838 and $asc<=-12557)return "W"; 
if($asc>=-12556 and $asc<=-11848)return "X"; 
if($asc>=-11847 and $asc<=-11056)return "Y"; 
if($asc>=-11055 and $asc<=-10247)return "Z"; 
return false; 
}


三,如何实现文章列表中,按首字母进行归类归档排序?下面是完整代码

<div class="container padding-big"style="min-height:200px;">
<p class="text-large">{dede:type }[field:typename/]{/dede:type}</p>
<div class="line-big">
{dede:php} 
$sql = "select arc.id,arc.writer,arc.typeid, arc.title, arc.senddate,tp.sitepath,tp.namerule,tp.typedir from dede_archives  arc  left join `#@__arctype` tp on arc.typeid=tp.id where arc.typeid=2";
 $dsql->SetQuery($sql);
$dsql->Execute();//执行SQL操作
while($row = $dsql->GetArray()){
//print_r($row['title']);exit;
//$pingyin=GetPinyin($row['title'],0,1);
$letter=substr(GetPinyin($row['title']),0,1);//取得拼音首字母
$letter=strtoupper($letter);

$arr[$letter]['writer'][]=$row["writer"];
$arr[$letter]['url'][]=GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],0,0,$row['namerule'],$row['typedir'],0, '',0,'',$row['sitepath']);
$arr[$letter]['title'][]=$row["title"];       
} 
ksort($arr);//字母排序
//print_r($arr);exit;
$b=1;
foreach($arr as $k=>$v){

//print_r($v);exit;
echo '<div class="x3"><p class="padding-left bg-eee st">'.strtoupper($k).'</p>';
for ($x=0; $x<count($v['title']); $x++) {
			 echo '<a href="'.$v[url][$x].'"><strong>'. $v[title][$x].'</strong></a><br/><hr/>';
			
		} 	 
			 echo '<br/></div>';// print_r($b%4);
			 if($b%3==0){echo '<hr class="space"></hr>';//hr{background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:1px;margin:10px 0;border:none;-moz-box-sizing:content-box;box-sizing:content-box;}hr.space{background:#fff;color:#fff;visibility:hidden;}hr的css,强制换行,防止错位
			 }
			 $b++;
             }
{/dede:php}
</div>
</div>




© 著作权归作者所有

共有 人打赏支持
越野小生
粉丝 3
博文 113
码字总数 32174
作品 0
杨浦
织梦dedecms v5.7使用sql标签实现静态分页

相信很多使用dedecms的朋友在网上查找关于dede:sql标签进行分页的解决方案时都不尽如人意,尤其是在列表页使用dede:sql调用外部数据(所谓调用外部数据就是指在后台只是创建个空栏目,然后对...

沁雪澜 ⋅ 05/26 ⋅ 0

织梦会员中心提取内容第一个图片为缩略图和自动添加水印问题

dedecms程序的会员中心默认是没有自动提取缩略图和添加水印功能的,想要开启的话,需要修改会员中心文件,下面的方法以文章模型修改。 会员中心提取内容第一个图片为缩略图 memberarticle_ad...

dedehtml ⋅ 05/12 ⋅ 0

Nginx+MySQL+PHP网站开发环境集成包 - WNMP

WNMP是Windows下的绿色Nginx+Mysql+PHP环境集成套件包(目前仅支持32系统)。 解压后点击 start.bat 启动,即可得到一个Nginx + MySQL + PHP 环境。然后就可以直接安装 Discuz!, PHPWind, DeDe...

韦泽 ⋅ 2012/06/03 ⋅ 2

PHP学习路线图 最全PHP自学指南

对于广大零基础的PHP自学者,往往不知道如何系统的学习PHP,导致平白浪费了很多时间。本文将为大家带来最详细的php学习路线图,同时还会附上相应的权威教程,让广大PHP自学者少走许多弯路。 ...

W3Cschool小编 ⋅ 04/24 ⋅ 0

IOS数组按中文关键字以字母序排序

IOS项目中会用到对通讯录的联系人或是会员按姓名为关键字排序,因为NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完成按A~Z的排序,这看起来是个头疼的问题,因为牵扯到汉字...

长平狐 ⋅ 2012/11/01 ⋅ 0

让ShartDevelop的[自动完成列表]支持中文变量名拼音首字母匹配

一直以来就十分怀念当年用易语言的时候可以使用中文变量名——自动完成的时候按拼音首字母就可以了。 虽然这几年习惯了用英文变量名,但总是有点怀旧情结。昨天闲极无聊,把SharpDevelop 的源...

帆船 ⋅ 2013/01/26 ⋅ 3

引用 使用Java获得汉字的拼音首字母

引用 恐龙007 的 使用Java获得汉字的拼音首字母 由于工作中需要从汉字中提取其拼音首字母,为了偷懒^_^....本人写了以下类实现了自动将汉字转化为其拼音首字母. 可以直接提取以下类中的方法,...

junsun ⋅ 2010/10/16 ⋅ 0

织梦dedecms 自带采集的缩略图地址后面有“/”斜杠的解决方法

本来想偷懒在网上找一些文档去解决织梦采集缩略图地址带“/”的问题的,可是找了找发现没有人写出解决方法,只好自己动手了。 过程很复杂,找了问题的原因也是找了半天,自己一点一点的测试。...

MyClassPHP ⋅ 04/14 ⋅ 0

DEDECMS教程:首页实现分页的两种方法

今天的DEDECMS教程中,主要讨论首页实现分页的两种方法。   有时在做织梦模板的时候需要实现首页分页效果,但是织梦本身首页是不带分页功能的,那如何实现织梦首页分页呢?有两种办法可以实...

越野小生 ⋅ 2016/04/24 ⋅ 0

织梦dedecms教程文章列表 “隔行换色” 的方法

织梦dedecms教程文章列表 “隔行换色” 的方法 {dede:arclist orderby=pubdate titlelen='26′ row='10′}[field:global runphp='yes' name=autoindex]$a="<div id='a'>";$b="<div id='b'>";......

西西爱OS ⋅ 2012/10/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 21分钟前 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 24分钟前 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 34分钟前 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 35分钟前 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 54分钟前 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部