PHP相同的字符串,但不一样

时间:2014-08-26 09:18:44

标签: php mysql phpexcel

我使用PHPExcel包将.xls文件中的数据导入我的数据库。文件不时更新,所以我必须再次导入。在导入之前,我检查数据库是否已包含.xls文件中包含的任何数据。

在大多数情况下,它可以工作 - DB中已包含的数据被省略,但仍有一些值是重复的。

这就是我的所作所为:
1.查询DB:SELECT * FROM Table1,将结果提取到数组 2. PHPExcel用法,获取变量的行值,检查数组中是否已存在该值 3.如果是 - 跳过,如果没有 - 添加到DB。


但是有一个值“包含在数组中的名称(xxx yyy zzz)”(我使用if ($array[0] == "The name (xxx yyy zzz)")并返回true),但PHP函数array_search仍无法找到它。

我使用trim但仍然没有。 var_dump变量,实际值和索引值相同。 similar_text($array[0], "The name (xxx yyy zzz)")返回2.

请帮助,我没有想法。

2 个答案:

答案 0 :(得分:1)

2个已知问题:


<强> 1

我曾经遇到过类似的问题。最后的问题是导入的数据是使用不正确的编码读取的。它导致以下结果:

echo $str1; // output: foo
echo $str2; // output: foo
echo $str1 == $str2 ? "The same" : "Not the same"; // output: Not the same

在我做完以下事情后,我才明白这一点:

for($i = 0; $i < strlen($str1); $i++) echo ord($str1[$i])." "; // 102 111 111
for($i = 0; $i < strlen($str2); $i++) echo ord($str2[$i])." "; // 102 0 111 0 111 0

我猜你正在遇到类似的事情。


<强> 2

另一种可能性是在评论中建议您在字符串中包含HTML。要在公开场合解决这个问题,请执行以下操作:

echo htmlspecialchars($str1); // foo
echo htmlspecialchars($str2); // <span>foo</span>

和/或在浏览器中查看HTML页面的来源。

答案 1 :(得分:1)

最好使用MySQL来做到这一点:

ALTER IGNORE TABLE your-table ADD UNIQUE INDEX idx ( uniqueField, orFields );

这将删除字段或字段相同的所有重复项。完成后删除索引:

ALTER TABLE your-table DROP INDEX idx