【问题标题】:PHP iconv function - deletes all string after the first unicode character in the stringPHP iconv 函数 - 删除字符串中第一个 unicode 字符之后的所有字符串
【发布时间】:2020-03-11 17:00:38
【问题描述】:
$string = @iconv("UTF-8", "UTF-8", $string);

我正在使用此代码替换字符串中的 Unicode 字符,但实际上它的作用是删除字符串中第一个 Unicode 符号之后的所有字符。有没有其他功能可以帮助我做到这一点?

【问题讨论】:

  • 您要删除 unicode 字符吗?
  • 是........
  • 您的代码将 UTF-8 字符串转换为另一个 UTF-8 字符串...也许您需要更改第二个参数。查看 PHP 文档:php.net/manual/en/function.iconv.php
  • @Inazo 我在某处读到,这是一个已知的错误。如果有更好的方法,我会尽量避免使用此功能。

标签: php unicode utf-8 iconv


【解决方案1】:

我建议使用preg_replace 这样做:

preg_replace('/[\x00-\x1F\x7F]/u', '', $string);

甚至更好:

preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $string);

如果上述方法不适用于您的情况,则可能:

preg_replace( '/[^[:cntrl:]]/', '',$string);

您还可以选择过滤您需要的内容,而不是删除您不需要的内容。像这样的东西应该可以工作:

filter_var($string, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);

【讨论】:

  • @doki 好吧,这真的取决于您的输入。这就是为什么我给出了多种解决方案,因为我不知道哪一种适合你。很高兴能帮到你:)
猜你喜欢
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多