【问题标题】:php foreach not working properly with explodephp foreach 无法与爆炸一起正常工作
【发布时间】:2013-02-15 23:03:40
【问题描述】:

好的,下面是一些php代码。

$user_pass = "
vortex90:OPFY4MB8
jimmy3:3M7ISWof
dave-ish-mental:YEnMMXua
cindybaby:rRHxrErp
claire-x:H4VrT8Xx
icemonster:ODId9N17
";

$token = 'token';    
$ex = explode("\r", $user_pass);

foreach ($ex as $info) {
   print "username=" . str_replace(":", "&password=", $info) . "&token=" . $token . "\n";
}

我想要 foreach() 做的是为每个爆炸显示

username=username&password=password&token=token

但下面是返回的内容。

vortex90&password=OPFY4MB8
jimmy3&password=3M7ISWof
dave-ish-mental&password=YEnMMXua
cindybaby&password=rRHxrErp
claire-x&password=H4VrT8Xx
icemonster&password=ODId9N17

为什么没有按预期返回?欢迎所有答案。

【问题讨论】:

  • 可能是因为您需要在换行符\n 上使用explode() 而不是回车\r
  • 你怎么知道它的\r不是\n或\n?
  • 按预期为我工作:codepad.viper-7.com/wkYlhC
  • 你可以照顾 PHP_EOL 常量
  • 谢谢,这是一个我无法弄清楚的简单错误

标签: php foreach explode


【解决方案1】:

这对我有用,最好使用 PHP_EOL:

$token = "bla";
$user_pass = "
vortex90:OPFY4MB8
jimmy3:3M7ISWof
dave-ish-mental:YEnMMXua
cindybaby:rRHxrErp
claire-x:H4VrT8Xx
icemonster:ODId9N17
";

$explode = explode(PHP_EOL, $user_pass);

foreach($explode as $i) {
$replace_shit  = str_replace(array("\r","\n",":"), array("","","&password="), $i);
$user_info = "username=".$replace_shit."&token=".$token."<br>\n";

echo $user_info;
}

演示:http://sandbox.onlinephpfunctions.com/code/02f6663f7fa69c158a90fde2ab421cf52a78f7ce

【讨论】:

  • 仅供参考:PHP_EOL 在所有平台上都是 \n。没关系。
  • 酷,我在 Core.php 中查看 5.3.2,它是所有平台的 define ('PHP_EOL', "\n");。除非我读错了。不过,如果 PHP 读取保存在 Windows 服务器上的 Linux 文件,然后爆炸(PHP_EOL)它的内容会失败吗?由于源文件不包含\r\n 换行符? Windows 不会重新格式化文本文件并添加缺少的 \r 中断。
猜你喜欢
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 2021-10-15
  • 2014-09-24
  • 2021-11-21
  • 2019-09-20
  • 1970-01-01
  • 2013-10-10
相关资源
最近更新 更多