2012-06-07 14 views
6

Web sitemiz Çince ve ana sayfanın bir kısmı, diğerlerinin sayfa başlıklarının listesini '26' olarak isimlendirilen bir maksimum uzunlukta gösterir (eğer İngilizce karakter sayımını kullanırsam Çince karakterler İngilizce kullanılarak yazılmıştır?). Bunun için kullandığımız çizgidir: AncakÇince metninin kesilmesi

<?php echo anchor('projects/'.$rs->url_project_title.'/'.$rs->project_id,substr(ucfirst($rs->project_title),0,26),'style="text-decoration:none;"'); ?>

başlık uzun gerçekten de doğru olması gerekir ama ben tahmin ediyorum gibi son iki Çince karakterler hep gösterilmektedir olarak kod keser kelimelerin İngilizce versiyonunu kullanıyor ve bir Çince karakter (bir şekilde) bölüyor. Belki de bunu düşünüyorum! Örneğin

....

Orijinal:
在国内做一个尊重艺术,能够为青年导演提供平

Kesik versiyon:
在国内做一个尊重��

belki karakterlerin istenen sayıda sağlamak için bir değişiklik önerebilir sonuçlanan olmadan göstermek ’ler?

cevap

6

yerine substr kullanımı mbstring fonksiyonları:

echo anchor(
    'projects/' . $rs->url_project_title . '/' . $rs->project_id, 
    mb_substr(ucfirst($rs->project_title), 0, 26), 
    'style="text-decoration:none;"' 
); 

Bu başarılı değilse, o zaman PHP dize kodlamasını algılamak ve bu nedenle mb_substr() doğru kodlamayı veriniz vermedi mümkündür:

// PHP uses internal encoding mb_internal_encoding() 
echo mb_substr($string, 0, 26); 
// you specify the encoding - in the case you know in which encoding the input comes 
echo mb_substr($string, 0, 26, 'UTF-8'); 
// PHP tries to detect the encoding 
echo mb_substr($string, 0, 26, mb_detect_encoding($string)); 

Daha fazla bilgi için mb_detect_encoding() adresine bakın.

Bu yardımcı olur umarım.

+2

Mükemmel! Bu forum beni şaşırtmaktan asla vazgeçmiyor, çok teşekkürler! Son çıktıda kullanılan kod: echo anchor ( 'projeler /'. $ Rs-> url_project_title. '/'. $ Rs-> project_id, mb_substr (ucfirst ($ rs-> project_title), 0, 26 , 'UTF-8'), 'style = "text-decoration: none;"' ); ' – JoeW

+0

Bir şey değil! :-) – shadyyx

İlgili konular