呈现html上的PHP子字符串和奇怪图标
我真的不知道为什么在西里尔字体上,子字符串将一些字符替换为“?” 我的代码呈现html上的PHP子字符串和奇怪图标,php,string,substring,Php,String,Substring,我真的不知道为什么在西里尔字体上,子字符串将一些字符替换为“?” 我的代码 $string1 = get_the_content(); $string = strip_tags($string1); $stringcutted = substr($string,0,150); $replacement = "..."; $final = substr($stringcutted, 0, -3).$replacement; 看看它是如何在html上呈现的 有解决方案吗?您需要检查字符编码。基
$string1 = get_the_content();
$string = strip_tags($string1);
$stringcutted = substr($string,0,150);
$replacement = "...";
$final = substr($stringcutted, 0, -3).$replacement;
看看它是如何在html上呈现的
有解决方案吗?您需要检查字符编码。基本上,您将字符串编码为一种格式,并将其输出为另一种格式 对于国际事务(看起来你正在这么做),我会使用UTF-8: -在HTML文件中,在头部添加(靠近顶部) -在PHP中,确保将所有字符串作为UTF-8处理 -如果您还有一个数据库,请确保该数据库、表和字段都配置为UTF-8(警告:进行此更改可能会在不导入/导出的情况下损坏现有数据!)。 -如果您正在读取带有特殊字符的模板文件,请确保这些文件是UTF-8。(如果没有特殊字符,则使用普通AscII) 答案很简单。关于字符编码有很多值得一读的东西,只需谷歌一下
(另一种解决方案是,使用ASCII,但将所有内容转换为对web友好的字符代码。但要正确使用所有代码,尤其是在处理用户输入时,更为困难。)因为PHP的字符串函数是基于字节字符串的;他们对字符编码一无所知。因此,在类似UTF-8的情况下,一个字符可以占用多个字节,它的工作方式与您希望的不同:
<?php
$x = 'Подмосковные вечера';
print(strlen($x)."\n"); # 37, not 19
print(substr($x,0,1)."\n"); # �, not П
print(substr($x,0,2)."\n"); # П, not По
?>
如果要处理非ASCII文本,请查看。必须手动定义字符集。使用mb_substr()。这应该会有帮助。