2012-05-23 31 views
6

我真的不知道爲什麼在西里爾字體,子串替換一些字符與「?」PHP子串和呈現的html上的奇怪圖標

我的代碼

$string1 = get_the_content(); 
$string = strip_tags($string1); 
$stringcutted = substr($string,0,150); 
$replacement = "..."; 
$final = substr($stringcutted, 0, -3).$replacement; 

再看看它是如何在HTML

strange icon1 strange icon2

任何解決方案呈現?

回答

3

因爲PHP的字符串函數是基於字符串的字節;他們沒有字符編碼的知識。如果你想操縱非

<?php 
$x = 'Подмосковные вечера'; 
print(strlen($x)."\n");  # 37, not 19 
print(substr($x,0,1)."\n"); # �, not П 
print(substr($x,0,2)."\n"); # П, not По 
?> 

看那multibyte string functions:所以像UTF-8,一個角色可以佔用多個字節,它不工作,你會希望它的方式-ASCII文本。

0

您需要檢出字符編碼。基本上,你有一種格式的字符串編碼,你用另一種格式來解析它。

對於國際的東西(它看起來像你這樣做),那麼我會使用UTF-8: - 在HTML文件中的頭添加(靠近頂部) - 在你的PHP,請確保您'如果你還有一個數據庫,確保數據庫,表和字段都被配置爲UTF-8(警告:如果沒有導入/導出,這種改變可能會破壞數據的存在! )。 - 如果您正在閱讀帶有特殊字符的模板文件,請確保這些文件是UTF-8。 (如果沒有特殊字符,那麼正常的AscII會做)

這就是簡單的答案。有很多要閱讀的字符編碼 - 只是谷歌它。

(替代解決方案,使用ASCII,但將所有的都以Web友好的字符代碼。但是,這是棘手把所有的代碼的權利,尤其是處理用戶輸入。)