我正在开发一项功能,该功能要求我获取网页的内容,然后检查该页面中是否存在某些文本。这是一个反向链接检查工具。
问题是这样的 - 该函数在大多数情况下运行完美,但有时,当链接明显存在时,它会标记页面没有链接。我已经追踪到了对输出中的字符串进行视觉比较的程度,它们匹配得很好,但是使用 == 运算符,PHP 告诉我它们不匹配。
认识到这可能是某种编码问题,我决定看看如果我使用会发生什么base64_encode()在它们上,所以我可以看看这样做是否会在两个字符串之间产生不同的结果(看起来完全相同)。
我的怀疑得到了证实 - 在要比较的字符串上使用 base64_encode 会产生不同的字符串。问题找到了!
有什么方法可以根据输出的文本(匹配)使这些字符串统一,以便当我在 PHP 中比较它们时,它们匹配?
我并不完全相信你认为这是编码。 PHP 将以相同的格式在内部存储所有字符串。
你能试试这段代码吗?它将比较两个字符串中每个字符的 ASCII 值,这可能会揭示通过直观比较字符串而看不到的内容。
$str1 = ...;
$str2 = ...;
if(strlen($str1) != strlen($str2)) {
echo "Lengths are different!";
} else {
for($i=0; $i < strlen($str1); $i++) {
if(ord($str1[$i]) != ord($str2[$i]) {
echo "Character $i is different! str1: " . ord($str1[$i]) . ", str2: " . ord($str2[$i]);
break;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)