【问题标题】:str_replace with text files and arraystr_replace 用文本文件和数组
【发布时间】:2012-07-29 13:46:09
【问题描述】:

我无法理解这一点。我在这里和其他地方读过许多其他帖子,但我就是不明白。我想可能是因为我很难想象别人的例子。有人可以给我一些关于我在这里做错了什么的见解。

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 行
  • 注意:未定义 变量:第 16 行 C:\xampp\htdocs\tools\str_replace.php 中的数组
  • 注意:未定义的变量:数组 C:\xampp\htdocs\tools\str_replace.php 第 16 行

感谢@提示。我删除了它,现在我又得到了这个。

  • 警告:fopen() 期望参数 1 为字符串,数组在 C:\xampp\htdocs\tools\str_replace.php 中给出
  • 警告:fopen() 期望参数 1 为字符串,数组在 C:\xampp\htdocs\tools\str_replace.php 中给出

【问题讨论】:

  • 当你这样做时会发生什么?

标签: arrays fopen str-replace explode


【解决方案1】:

嗯,这只能意味着文件本身没有打开读取。 如果它输入了以下内容,则 $array 将被设置。

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

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

编辑:在您的for-each 循环中,您应该在内部使用 $replacelist 变量,而不是整个数组。应该是

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

}

【讨论】:

  • 谢谢,我把@it去掉了,把结果贴在上面了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多