Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
呈现html上的PHP子字符串和奇怪图标_Php_String_Substring - Fatal编程技术网

呈现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()。这应该会有帮助。