方法一,织梦默认有这个函数,在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' ); |
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);//字母转换成大写 |
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" ; |
|
三,如何实现文章列表中,按首字母进行归类归档排序?下面是完整代码
01 |
<div class= "container padding-big" style= "min-height:200px;" > |
02 |
<p>{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 `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); |
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><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/>' ; |
29 |
echo '<br/></div>' ;// print_r($b%4); |
30 |
if ($b%3==0){ echo '<hr></hr>' ;//hr{background: |
31 |
border:none;-moz-box-sizing:content-box;box-sizing:content-box;}hr.space{background:
|
|