【问题标题】:explode() confusing me爆炸()让我感到困惑
【发布时间】:2012-06-25 18:59:00
【问题描述】:
<?php
$player = $_GET['player'];
$data = explode(" ", file_get_contents("http://hiscore.runescape.com/index_lite.ws?player={$player}"));
print_r($data);
?>

由于某种原因,返回

Array ( [0] => 322788,1584,39425065 474211,75,1213741 424332,73,1044331 497032,75,1223804 518140,74,1127869 622836,53,146813 484601,51,114656 540925,65,452516 276405,78,1772587 614588,62,339049 85477,99,13069655 135438,86,3702239 69906,99,13034532 376565,60,294135 403376,55,173156 413268,62,349011 339269,50,103575 388661,52,125891 452907,52,134281 402625,50,102104 281390,50,109948 236592,63,377586 385212,50,103894 329955,50,104225 320731,50,103833 286842,50,101634 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 )

file_get_contents检索到的原始数据是

322790,1584,39425065 474214,75,1213741 424335,73,1044331 497037,75,1223804 518145,74,1127869 622844,53,146813 484604,51,114656 540930,65,452516 276407,78,1772587 614595,62,339049 85477,99,13069655 135439,86,3702239 69906,99,13034532 376567,60,294135 403379,55,173156 413272,62,349011 339272,50,103575 388664,52,125891 452909,52,134281 402629,50,102104 281392,50,109948 236593,63,377586 385216,50,103894 329957,50,104225 320733,50,103833 286843,50,101634 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1

我看不出这不起作用的原因。测试一下,explode(" ", "The cat is happy") 完美运行。

有什么想法吗?

【问题讨论】:

  • 数据没有空格分隔的可能吗?但是一个不同的(相似的)字符,比如 U+160? " ",或&amp;nbsp;
  • 如果您向我们提供您的 api 调用结果,我们可以停止猜测。
  • 我尝试直接从检索到的数据复制到分隔符之间的空格无济于事。
  • @JulianHollmann 我做到了。它在“原始数据检索者”之后...
  • var_dump(file_get_contents("http://hiscore.runescape.com/index_lite.ws?player={$player}"));

标签: php explode implode


【解决方案1】:

原始数据由换行符分隔(查看该页面的源代码,您会看到类似以下内容:

369410,1491,41557372
670285,60,285887
777347,41,44705
399433,80,2132002
263342,89,4893081
86022,99,13097638
472647,52,123827
278652,84,3165705
454958,66,517025
706040,53,137563
445967,61,328458
382124,68,642361
362084,66,534339
321096,62,342446
412791,54,164607
475061,60,279628
331177,50,107107
332564,56,199183
21509,99,13217389
371340,53,148963
314233,46,68904
463762,44,55836
128963,73,1034979
569897,20,4784
500492,19,4088
412997,36,26867
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1
-1,-1

尝试以此来爆炸。

explode("\n", ...);

【讨论】:

    【解决方案2】:
    var_dump(
        explode(',', 
            str_replace("\n", '',
                file_get_contents("http://hiscore.runescape.com/index_lite.ws?player={‌​$player}"
                )
            )
        )
    );
    

    【讨论】:

    • 可怕的想法。它将合并行尾和行首的整数。即:,41557372\n670285, 将变为,41557372670285,。如果有的话,请str_replace("\n", ',',...
    • 不知道输入,不关心.. 即便如此很明显 % 3 会解决“问题”,除非没有-1,-1,我没有在我回答之前看到...
    【解决方案3】:

    您正在尝试按空格展开,但您的原始数据馈送中没有空格。

    都是逗号分隔,所以试试:

    $lines = explode("\n", $data);
    foreach($lines as $line){
        $values = explode(",", $line);
    }
    

    【讨论】:

    • 更新了循环的答案,但没有空格,那些是换行符。 " " != "\n"
    猜你喜欢
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2010-12-14
    相关资源
    最近更新 更多