【发布时间】:2016-05-04 16:25:43
【问题描述】:
我很难匹配两个文本字符串。一个包含来自文本字符串的一些隐藏字符。
我有一个文本字符串:“PR & Communications”存储在 SQL 数据库中。当从那里拉到$database_version 时,var_dump($database_version) 显示字符串有 19 个字节。
我已(经许可)从网站上将一些文本抓取到变量 $web_version 中。表面上该字符串是“PR & Communications”,但它与数据库版本不匹配,即if($database_version == $web_version) 不正确。
var_dump() 显示$web_version 有 23 个字节。 trim() 没有效果,strip_tags() 也没有效果,但preg_replace( '/[^\PC\s]/u', $web_version ) 删除了一些东西,因为之后string_var($web_version) 显示字符串仅包含 14 个字节。它显然删除了一些东西,可能太多了,因为字符串仍然与 $database_version 不匹配。
任何想法如何:
- 找出已删除的内容
- 只删除足以匹配 $database_version 的内容?
PS我不知道如何查看十六进制代码中的变量
【问题讨论】:
-
你试图比较 if( $database_version == $web_version ) 两个变量都是字符串格式吗?尝试一些类型转换和修剪方法。
-
您可以尝试使用
utf8-decode($web_version)- php.net/manual/en/function.utf8-decode.php。 -
调试:将字符串视为十六进制字节,然后使用
var_dump($web_version, bin2hex($web_version), __FILE__.__LINE__);。看看这个字符代表什么:ASCII Table and Description 和 Complete Character List for UTF-8 -
谢谢 Ryan,您的 var_dump 公式显示,一个值将“&”作为 & 符号,另一个作为 &,因此这两个值不匹配。这帮助我解决了问题。
标签: php mysql string-matching