在关联数组中使用非标准字符

时间:2014-08-26 05:02:19

标签: php arrays character-encoding

美好的一天!我正在为一个聊天室的解析器工作,该解析器可以根据谁正在为存档目的进行交谈来为文本着色。我有完美的工作,除了现在管理员希望能够删除“花哨”的名称,并替换为他们的一些普通人更可读的版本。

聊天室允许使用扩展范围的字母和符号,当传输到rtf文件时,可能无法完全转移。

我无法让它发挥作用,并且没有看到任何理由不应该这样做。

这是我所拥有的一个例子:

$nameconvert = array(
     "îrúål__Þħōþħ" => "Eriel__Thoth",
);

***Scripting that parses an uploaded text
 file line by line, each line places in an
 array using space as delimiter... thus 
name of person talking is $row_data[0]***

$name = $row_data[0];
$name = $nameconvert[$name];

** Code to throw everything back together **

现在,这只是一个简化的片段,但无论出于何种原因,它都不起作用。现在,如果我做了$ name = $ nameconvert ['îrúål__Þħōþħ']那么它确实有效,告诉我即时放入脚本的名称,以及从mytext文件中提取的名称是两个不同的东西,尽管它们在视觉上是相同的

HELP!

1 个答案:

答案 0 :(得分:0)

我找到了答案,并希望与其他人分享我的解决方案。

这是修改后的代码

$nameconvert = array(
    "0123456789abcdef" => "Eriel__Thoth",
);

***Scripting that parses an uploaded text
file line by line, each line places in an
array using space as delimiter... thus 
name of person talking is $row_data[0]***

$name = $row_data[0]
$name = $nameconvert[bin2hex(mb_convert_encoding($name,"UTF-8"))];
$name = $nameconvert[$name];

** Code to throw everything back together **

命令bin2hex(mb_convert_encoding($ name," UTF-8"))从文件中获取名称,确保它是UTF-8格式,然后创建其十六进制等效项。然后它使用数组中的那个对应一个更容易阅读的名称

它的工作方式与我想要的一样!