加入收藏 | 设为首页 | 会员中心 | 我要投稿 鞍山站长网 (https://www.0412zz.cn/)- 智能营销、数据计算、数据可视化、负载均衡、研发安全!
当前位置: 首页 > 教程 > 正文

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

发布时间:2022-09-02 10:39:43 所属栏目:教程 来源:互联网
导读:方法一,织梦默认有这个函数,在include/inc/inc_fun_funAdmin.PHP中.即SpGetPinyin() 但他只能得到全拼,没法得到首字母, 用法举例 $pingyin=GetPinyin($row[title],0,1); $a=substr(GetPinyin($row[title]),0,1);//得到拼音首字母 方法二,如果你只想得到首字
  方法一,织梦默认有这个函数,在include/inc/inc_fun_funAdmin.PHP中.即SpGetPinyin()
  但他只能得到全拼,没法得到首字母,
  用法举例
  $pingyin=GetPinyin($row['title'],0,1);
  $a=substr(GetPinyin($row['title']),0,1);//得到拼音首字母
  方法二,如果你只想得到首字母,不需要全拼,还可以用以下函数得到首字母
 
  01
  if (ord($row['title'])>128) { //汉字开头
  02
   $letter=getfirstchar2($row['title']);
  03
  }else if(ord($row['title'])>=48 and ord($row['title'])<=57){ //数字开头
  04
  $letter=iconv_substr($title,0,1,'utf-8');
  05
  }
  06
  else if(ord($row['title'])>=65 and ord($row['title'])<=90){ //大写英文开头
  07
  $letter=iconv_substr($row['title'],0,1,'utf-8');
  08
  }else if(ord($row['title'])>=97 and ord($row['title'])<=122){ //小写英文开头
  09
  $letter=iconv_substr($row['title'],0,1,'utf-8');
  10
  $letter=strtoupper($letter);//字母转换成大写
  11
  }
  12
  print_r($letter);exit;
  13
   function getfirstchar2($s0){
  14
  $s=iconv("UTF-8","gb2312", $s0);
  15
  $asc=ord($s{0})*256+ord($s{1})-65536;
  16
  if($asc>=-20319 and $asc<=-20284)return "A";
  17
  if($asc>=-20283 and $asc<=-19776)return "B";
  18
  if($asc>=-19775 and $asc<=-19219)return "C";
  19
  if($asc>=-19218 and $asc<=-18711)return "D";
  20
  if($asc>=-18710 and $asc<=-18527)return "E";
  21
  if($asc>=-18526 and $asc<=-18240)return "F";
  22
  if($asc>=-18239 and $asc<=-17923)return "G";
  23
  if($asc>=-17922 and $asc<=-17418)return "H";
  24
  if($asc>=-17417 and $asc<=-16475)return "J";
  25
  if($asc>=-16474 and $asc<=-16213)return "K";
  26
  if($asc>=-16212 and $asc<=-15641)return "L";
  27
  if($asc>=-15640 and $asc<=-15166)return "M";
  28
  if($asc>=-15165 and $asc<=-14923)return "N";
  29
  if($asc>=-14922 and $asc<=-14915)return "O";
  30
  if($asc>=-14914 and $asc<=-14631)return "P";
  31
  if($asc>=-14630 and $asc<=-14150)return "Q";
  32
  if($asc>=-14149 and $asc<=-14091)return "R";
  33
  if($asc>=-14090 and $asc<=-13319)return "S";
  34
  if($asc>=-13318 and $asc<=-12839)return "T";
  35
  if($asc>=-12838 and $asc<=-12557)return "W";
  36
  if($asc>=-12556 and $asc<=-11848)return "X";
  37
  if($asc>=-11847 and $asc<=-11056)return "Y";
  38
  if($asc>=-11055 and $asc<=-10247)return "Z";
  39
  return false;
  40
  }
  三,如何实现文章列表中,按首字母进行归类归档排序?下面是完整代码
 
  01
  <div class="container padding-big"style="min-height:200px;">
  02
  <p>{dede:type }[field:typename/]{/dede:type}</p>
  03
  <div>
  04
  {dede:php}
  05
  $sql = "select arc.id,arc.writer,arc.typeid, arc.title, arc.senddate,tp.sitepath,tp.namerule,tp.
  typedir from dede_archives  arc  left join `dede_arctype` tp on arc.typeid=tp.id where arc.
  typeid=2";
  06
   $dsql->SetQuery($sql);
  07
  $dsql->Execute();//执行SQL操作
  08
  while($row = $dsql->GetArray()){
  09
  //print_r($row['title']);exit;
  10
  //$pingyin=GetPinyin($row['title'],0,1);
  11
  $letter=substr(GetPinyin($row['title']),0,1);//取得拼音首字母
  12
  $letter=strtoupper($letter);
  13
    
  14
  $arr[$letter]['writer'][]=$row["writer"];
  15
  $arr[$letter]['url'][]=GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],0,0,$row['namerule'],$row
  ['typedir'],0, '',0,'',$row['sitepath']);
  16
  $arr[$letter]['title'][]=$row["title"];       
  17
  }
  18
  ksort($arr);//字母排序
  19
  //print_r($arr);exit;
  20
  $b=1;
  21
  foreach($arr as $k=>$v){
  22
    
  23
  //print_r($v);exit;
  24
  echo '<div><p class="padding-left bg-eee st">'.strtoupper($k).'</p>';
  25
  for ($x=0; $x<count($v['title']); $x++) {
  26
     echo '<a href="'.$v[url][$x].'"><strong>'. $v[title][$x].'</strong></a><br/><hr/>';
  27
                
  28
          }    
  29
              echo '<br/></div>';// print_r($b%4);
  30
               if($b%3==0){echo '<hr></hr>';//hr{background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:1px;
  margin:10px 0;
  31
               border:none;-moz-box-sizing:content-box;box-sizing:content-box;}hr.space{background:#fff;color:#fff;visibility:hidden;}hr的css,强制换行,防止错位
   
  32
               }
  33
               $b++;
  34
               }
  35
  {/dede:php}
  36
  </div>
  37
  </div>
 

(编辑:鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读