2012-07-31 58 views
2

我无法理解这一点。我在这里和其他地方读过很多其他帖子,但我只是不明白。我想也许是因为我很难想象其他的例子。有人能给我一些见解,说明我在这里做错了什么。带文本文件和数组的str_replace

1. $data = file_get_contents("rawtext.txt"); 
2. 
3. $kList[0] = "uszips.txt"; 
4. $kList[1] = "cities.txt"; 
5. $kList[2] = "states.txt"; 
6. 
7. foreach($kList as $replacelist) 
8. { 
9. 
10. 
11. $fp = @fopen($kList, 'r'); 
12. if ($fp) { 
13. $array = explode("\n", fread($fp, filesize($kList))); 
14. } 
15. 
16.  $replacelist = str_replace($array,"", $data); } 
17. 
18. // remove stuff less than 2 characters, 
19. $data = preg_replace("!\\b\\w{1,2}\\b!", "", $data); 
20. // remove blank lines. 
21. $data = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $data); 
22. 
23. //save it back: 
24. file_put_contents("stripped.txt",$data); 
25. 

@DarkXphenomenon我收到这些通知

  • 注意:未定义的变量:数组中 C:\ XAMPP \ htdocs中\ TOOLS \ str_replace.php上线16
  • 注意:未定义 变量:阵列中的C:\ XAMPP \ htdocs中\工具\ str_replace.php上线16
  • 说明:未定义变量:阵列中 C:\ XAMPP \ htdocs中\工具\ str_replace.php上线16

感谢那@提示。我删除它,现在我得到了此外。

  • 警告:fopen()函数预计参数1是字符串,在C给定的数组:\ XAMPP \ htdocs中\工具\ str_replace.php上线
  • 警告:fopen()函数预计参数1是字符串,数组给出在C:\ xampp \ htdocs \ tools \ str_replace.php在线
+0

当你这样做会发生什么? – 2012-07-31 17:58:51

回答

0

那么,这只能意味着文件本身并没有打开阅读。 如果输入以下内容,$ array将被设置。

if ($fp) { 
$array = explode("\n", fread($fp, filesize($kList))); 
} 

所以你应该检查文件是否真的存在。在测试时,您应该删除错误抑制@,因为它会使调试更快。

编辑:在你for-each循环,你应该使用里面的$ replacelist变量,而不是整个数组。它应该是

foreach($kList as $replacelist) 
{ 
$fp = @fopen($replacelist, 'r'); 
... 

} 
+0

谢谢,我删除了@它并粘贴上面的结果。 – user1566521 2012-07-31 18:37:25

+0

查看编辑答案。 – 2012-07-31 18:42:16