Php 比较包含撇号的相同字符串失败

Php 比较包含撇号的相同字符串失败,php,xml,string-comparison,Php,Xml,String Comparison,我创建了一个使用PHP和XML的单词词典。用户在网页表单的输入框中输入查询,然后使用PHP将该值与XML文件中的单词进行比较。任何nodeValue与搜索词匹配的标记都会在HTML表中返回 整个搜索工作正常,只有一个主要问题。我有一个选项,用户可以检查搜索精确匹配。选中此框后,PHP脚本将进行简单的if($searchterm==$xmlTagNodeValue)比较。它正确返回每个字符串,包括带有非字母字符(如连字符和下划线)的字符串,只有一个例外:包含撇号的字符串 换句话说,输入框中输入的不

我创建了一个使用PHP和XML的单词词典。用户在网页表单的输入框中输入查询,然后使用PHP将该值与XML文件中的单词进行比较。任何
nodeValue
与搜索词匹配的标记都会在HTML表中返回

整个搜索工作正常,只有一个主要问题。我有一个选项,用户可以检查搜索精确匹配。选中此框后,PHP脚本将进行简单的
if($searchterm==$xmlTagNodeValue)
比较。它正确返回每个字符串,包括带有非字母字符(如连字符和下划线)的字符串,只有一个例外:包含撇号的字符串

换句话说,输入框中输入的
不能
不等于XML文件中的
不能

我完全不知所措。我绝对肯定这两个字符串中的字符是相同的。我甚至尝试通过复制和粘贴XML文件中的值来对输入框的值进行编码,这两个文件在同一个文本编辑器中打开。但是比较结果总是错误的


我唯一能想象的是,这是某种编码问题,字符可能看起来相同,但值不同。但是,XML文件保存为UTF-8(如果相关的话,没有BOM),并且网页是用UTF-8查看的,因此我不确定还能做什么。

这可能不是编码问题,而是两个“撇号”实际上是两个不同的unicode字符。看一看。“另请参见”部分列出了其他六个类似的unicode字符。这两个字符串可能包含外观相似但不同的字符。您可能想尝试将每个字符转换为一个数字,以确认或反驳这一理论。

在某个点上发生了转义吗?您是否使用十六进制编辑器确认两个
具有相同的代码点?嗯。。。有趣。我使用
filter\u input
filter\u SANITIZE\u STRING
获取输入。当我停止这样做,只使用了
$\u REQUEST
,字符串现在显示为
can't
,在撇号前有一个反斜杠。现在,我需要一个方法来找出如何阻止它…好吧,现在我完全糊涂了。我使用
ord()
来比较两者。XML中的返回值为
39
,但输入框中的返回值(经过消毒液后)为
38
…除非。。。因为38是符号,所以php可能会发出类似于
'…?好吧,我仍然不完全确定发生了什么,但最后我只是做了一个自定义过滤器。显然,问题出在FILTER_SANITIZE_字符串上,或者更确切地说是我对它的工作原理不完全理解。非常感谢,伙计们!