我在while()循环中的错误在哪里?

时间:2016-11-24 20:44:23

标签: php

这是我对while()循环的编码我想知道哪里有错误。

<?php
$asb = 'http://themonitors.net/sitelist.php';
// Example of my data =  meetfreeman.com|back-capital.com|bitomine.com|thebillioncoins.com|

 $myfile = fopen($asb, 'r') or die("Unable to open file!");
// Output one line until end-of-file
if ($myfile != '') {
while(!feof($myfile)) {
 $string = fgets($myfile) ."<br><br>";

$matches = split('\|', $string );

    $url  = $matches[0];

     echo $url;
}
} else {
    echo "0 results";
}
fclose($myfile);
?>

我的while()循环只显示第一个数据(meetfreeman.com)

3 个答案:

答案 0 :(得分:0)

看一下 - split()比explode()需要更多的资源。像这样使用它:

<强>更新

$asb = 'http://themonitors.net/sitelist.php';

$myfile = file_get_contents($asb);
if ($myfile != '') {
  $urls = explode('|', $myfile);
  foreach ($urls as &$url) {
    echo $url;
  }
} else {
  echo "0 results";
}

答案 1 :(得分:0)

split函数之后,您会得到一个包含所有值的数组,但在$url中,您只获取其中的第一项。所以echo $url仅输出第一项。你想要打印所有$matches数组吗?

您的代码将是:

$asb = 'http://themonitors.net/sitelist.php';
// Example of my data =  meetfreeman.com|back-    capital.com|bitomine.com|thebillioncoins.com|

$myfile = fopen($asb, 'r') or die("Unable to open file!");
// Output one line until end-of-file
if ($myfile != '') {
    while(!feof($myfile)) {
        $string = fgets($myfile) ."<br><br>";
        $matches = split('\|', $string );
        foreach($matches as $matche) {
            echo $matche . "\n";
        }
    }
    } else {
    echo "0 results";
}
fclose($myfile);

答案 2 :(得分:0)

如果您的所有数据都在一行中,请尝试使用其他方法。

$data = file_get_contents($file)
$data = explode('|',$data);

if(!empty($data)){
   (...)
}else{
   echo '0 results';
}