方法一,织梦默认有这个函数,在include/inc/inc_fun_funAdmin.php中.即SpGetPinyin()
但他只能得到全拼,没法得到首字母,
用法举例
1 | $pingyin =GetPinyin( $row [ 'title' ],0,1); |
2 | $a = substr (GetPinyin( $row [ 'title' ]),0,1); |
|
方法二,如果你只想得到首字母,不需要全拼,还可以用以下函数得到首字母
01 | if (ord( $row [ 'title' ])>128) { |
03 | $letter =getfirstchar2( $row [ 'title' ]); |
05 | } else if (ord( $row [ 'title' ])>=48 and ord( $row [ 'title' ])<=57){ |
07 | $letter =iconv_substr( $title ,0,1, 'utf-8' ); |
09 | } else if (ord( $row [ 'title' ])>=65 and ord( $row [ 'title' ])<=90){ |
11 | $letter =iconv_substr( $row [ 'title' ],0,1, 'utf-8' ); |
14 | } else if (ord( $row [ 'title' ])>=97 and ord( $row [ 'title' ])<=122){ |
16 | $letter =iconv_substr( $row [ 'title' ],0,1, 'utf-8' ); |
17 | $letter = strtoupper ( $letter ); |
21 | function getfirstchar2( $s0 ){ |
22 | $s =iconv( "UTF-8" , "gb2312" , $s0 ); |
23 | $asc =ord( $s {0})*256+ord( $s {1})-65536; |
24 | if ( $asc >=-20319 and $asc <=-20284) return "A" ; |
25 | if ( $asc >=-20283 and $asc <=-19776) return "B" ; |
26 | if ( $asc >=-19775 and $asc <=-19219) return "C" ; |
27 | if ( $asc >=-19218 and $asc <=-18711) return "D" ; |
28 | if ( $asc >=-18710 and $asc <=-18527) return "E" ; |
29 | if ( $asc >=-18526 and $asc <=-18240) return "F" ; |
30 | if ( $asc >=-18239 and $asc <=-17923) return "G" ; |
31 | if ( $asc >=-17922 and $asc <=-17418) return "H" ; |
32 | if ( $asc >=-17417 and $asc <=-16475) return "J" ; |
33 | if ( $asc >=-16474 and $asc <=-16213) return "K" ; |
34 | if ( $asc >=-16212 and $asc <=-15641) return "L" ; |
35 | if ( $asc >=-15640 and $asc <=-15166) return "M" ; |
36 | if ( $asc >=-15165 and $asc <=-14923) return "N" ; |
37 | if ( $asc >=-14922 and $asc <=-14915) return "O" ; |
38 | if ( $asc >=-14914 and $asc <=-14631) return "P" ; |
39 | if ( $asc >=-14630 and $asc <=-14150) return "Q" ; |
40 | if ( $asc >=-14149 and $asc <=-14091) return "R" ; |
41 | if ( $asc >=-14090 and $asc <=-13319) return "S" ; |
42 | if ( $asc >=-13318 and $asc <=-12839) return "T" ; |
43 | if ( $asc >=-12838 and $asc <=-12557) return "W" ; |
44 | if ( $asc >=-12556 and $asc <=-11848) return "X" ; |
45 | if ( $asc >=-11847 and $asc <=-11056) return "Y" ; |
46 | if ( $asc >=-11055 and $asc <=-10247) return "Z" ; |
48 | }view plain<span class = "tracking-ad" data-mod= "popu_168" style= "color: silver; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 9px; box-sizing: border-box; margin: 0px; padding: 0px;" > cop</span> |
|
三,如何实现文章列表中,按首字母进行归类归档排序?下面是完整代码
01 | <div class = "container padding-big" style= "min-height:200px;" > |
02 | <p class = "text-large" >{dede:type }[field:typename/]{/dede:type}</p> |
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 `arctype` tp on arc.typeid=tp.id where arc.typeid=2" ; |
06 | $dsql ->SetQuery( $sql ); |
08 | while ( $row = $dsql ->GetArray()){ |
11 | $letter = substr (GetPinyin( $row [ 'title' ]),0,1); |
12 | $letter = strtoupper ( $letter ); |
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" ]; |
21 | foreach ( $arr as $k => $v ){ |
24 | echo '<div class="x3"><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/>' ; |
30 | if ( $b %3==0){ echo '<hr class="space"></hr>' ; |
36 | </div>view plain<span class = "tracking-ad" data-mod= "popu_168" style= "color: silver; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 9px; box-sizing: border-box; margin: 0px; padding: 0px;" > copy </span> |
|
感谢你的支持,我会继续努力!
扫码打赏,建议金额1-10元
Powered By 畅言云评
提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。