PHP不需要的字符删除解

时间:2011-10-27 09:40:14

标签: php regex string

在描述中获取“â”等字符。

为了转换我尝试使用utf8_encode()的那些,它将这个租船者转换为另一个奇怪的模式。也尝试使用regx和设置字符  它没有用。

解决问题的任何快速解决方案?

感谢。

2 个答案:

答案 0 :(得分:2)

最有可能的是,您的字符串包含使用UTF-8编码的字符 字符集。 UTF-8有一些多字节字符。例如, 欧元符号以UTF-8表示,其中包含三个字节E2, 82, AC

但是你的软件正在使用一个字节来解释字符串 编码,如ISO-8859-1。这会导致3字节的每个字节 字符被解释为单独的字符。 E2,为 例如,当它实际上只显示为â时 3字节字符的第一个字节。

utf8_encode()不是解决方案。它需要ISO-8859-1 编码的字符串并返回UTF-8字符串。你已经有了UTF-8 字符串。

你有几个选择。

一,修复使用该字符串的任何内容,以便它期望字符串 包含UTF-8。这将适当地保留那些字符 在字符串中。例如,如果您将字符串作为一部分写入 一个网页,确保网页的字符编码是UTF-8。

二,将字符串转换为您实际使用的编码。 例如,您可以将字符串从UTF-8转换为ISO-8859-1 使用utf_decode()。缺点是ISO-8859-1不能 表示与UTF-8一样多的不同字符,因此有些字符 将在解码中丢失。

答案 1 :(得分:0)

尝试我在处理utf8时写的这个函数

function removeuni($content){
  preg_match_all("/[\x{80}-\x{3000}]/u", $content, $matches);

  foreach($matches[0] as $match){
    $content = str_replace($match, mb_convert_encoding($match, "HTML-ENTITIES","UTF-8"), $content);
  }

  return $content;
}