完全解析字符串并像var_dump函数一样进行编码

时间:2019-02-24 01:18:34

标签: php encoding utf-8 character-encoding var-dump

TLDR;我需要一些有关如何将任何编码重新编码为UTF-8的指导,即使输入中存在多个字符集

我已经在互联网上拖网捕捞,在任何地方都找不到类似的东西...

基本上,我在这里生成了一个输入:https://mockaroo.com/使用“顽皮的字符串”类型,并且我已经将1000行输入到.txt文件中

在将file_get_contents-ing入php后,我在PHP_EOL上爆炸了,剩下了一个完美的1000长度数组

如果我var_dump数组,我会得到各种漂亮的字符,包括阿拉伯语,图标,中文以及基本上所有的东西...

我似乎无法复制var_dump函数正在执行的转换类型,以便能够以HTML显示此转换。这很重要,因为我正在使用用户输入来建立一个跨国网站。

我当前的代码如下:

function purge_user_input($string){ #Problem section $array = str_split($string); foreach($array as $str){ $var[]=mb_convert_encoding($ray,"UTF-8",mb_detect_encoding($str,mb_list_encodings())); } $string = implode("",$var); #End problem section while(htmlspecialchars_decode($string)!==$string){ $string=htmlspecialchars_decode($string); } $string=strip_tags($string); $string = preg_replace('/[\\x80-\\xFF]+/', '', $string); $string=trim(htmlspecialchars($string,ENT_QUOTES,"UTF-8",FALSE)); return $string; }

尽管这似乎产生了最好的效果(不是完全跳过外来字符,而是“ ??????”),但这不是我尝试过的全部内容

到目前为止,我已经尝试过:

  • 按照示例代码拆分
  • utf8_encode()
  • 实际上使用ob_start()var_dump返回字符串

我只需要以某种方式将任何字符串转换为UTF-8,无论使用哪种编码方式...该功能实际上可能需要花费很长的时间,因为它不会立即大量存储

1 个答案:

答案 0 :(得分:0)

经过更多研究,https://github.com/voku/portable-utf8似乎涵盖了 MOST 的基础,但是,我仍然无法使用阿拉伯语