我创建了一个使用PHP和XML的单词字典。用户在网页表单的输入框中输入查询,并使用PHP将该值与XML文件中的单词进行比较。 nodeValue
与搜索字词匹配的所有标记都会在HTML表格中返回。
搜索工作总体上很好,只有一个主要问题。我有一个选项,用户可以检查以搜索完全匹配。选中此框后,PHP脚本会进行简单的if ($searchterm == $xmlTagNodeValue)
比较。它为每个字符串正确返回,包括那些带有非字母字符的字符串,如连字符和下划线,只有一个例外:包含撇号的字符串。
换句话说,输入框中的can't
在XML文件中不等于can't
。
我完全失去了。我绝对肯定两个字符串中的字符都是相同的。我甚至尝试通过复制和粘贴XML文件中的值来硬编码输入框的值,同时在同一文本编辑器中打开这两个文件。但比较总是返回false。
我唯一可以想象的是它是某种编码问题,并且字符可能看起来相同但具有不同的值。但是,XML文件保存为UTF-8(没有BOM,如果相关),并且网页正在以UTF-8查看,所以我不确定我还能做什么。
答案 0 :(得分:0)
这可能不是编码问题,而是两个“撇号”实际上是两个不同的unicode字符。看看U+0027。 “另请参见”部分列出了六个类似的其他可能的unicode字符。两个字符串可能包含相似但看起来不同的字符。您可能希望尝试将每个字符转换为数字以确认或反驳此理论。