我们如何使用php从此字符串中删除诸如“ ”之类的字符

时间:2015-06-05 05:25:58

标签: php string

当我执行以下代码时,它返回非标准字符,那么我们如何删除它或获取原始字符串?

header('Content-type: text/html; charset=utf-8');
$String = "�่อตั้งเมื่อ";
echo $String;

输出:�?่อตั้งเมื่อ

需要实际结果:ก่อตั้งเมื่อ

3 个答案:

答案 0 :(得分:2)

您的字符串à¸?่อตั้งเมื่อ无效utf-8。这就是出现的原因 - 浏览器不知道如何解释它。

正如其他人所指出的那样,第三个位置上的问号可能就是问题所在。

错误字符串的前三个字节是e0 b8 3f3f是ascii代码?)。我不知道任何泰语,但THAI CHARACTER KO KAI的字节序列看起来非常相似,应该是e0 b8 81

答案 1 :(得分:0)

你提到字符包围为utf-8,其中字符串未编码为utf-8。这就是"?"标记出现在输出中而不是预期输出中。

答案 2 :(得分:0)

首先,为了不被编码问题弄糊涂,你真的想阅读以下文章:http://kunststube.net/encoding/

其次,我刚刚做了以下事情:

$ vim ~/sandbox/php/encoding.php
( inserted your code verbatim )
$ cd ~/sandbox/php/
$ php -S localhost:1200

在Firefox {@ 3}}页面中打开后,我得到了$String的内容。

我的意思是我得到以下字符:

�่อตั้งเมื่อ

这意味着您的浏览器无论如何都不知道如何呈现您输入的字符。字符串本身正在以UTF-8编码。您必须将浏览器设置为将文本显示为UTF-8,或者可能安装支持这些符号的字体。

另外,如果你想输出一些带有UTF-8梵文符号的文字,你只需要在PHP中满足以下要求:

  1. 您的源代码文件必须以UTF-8保存。
  2. 您必须发送已经执行的utf-8字符集子标题。
  3. 您必须将要输出的字符串 verbatim 输出到源代码,不需要以任何方式对其进行编码,PHP不关心。