2010-10-12 67 views
0

这是我的功能 http://www.ideone.com/slpPePHP函数无法追加结果

如果我不使用功能

preg_match_all("{http://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}[^\s\"\\\'\<&]*}ix", $html, $marches); 
    $download = $marches[0]; 
//var_dump(); 
    $i = 0; 
    for ($i; $i <= count($download); $i++) { 
     echo "download|"; 
     $links = $download[$i]; 
     if (!eregi("avaxhome.ws|pixhost.info", $links)) { 
      echo $links . "<br/>"; 
     } 
    } 

和返回某个环节

download| 

http://www.filesonic.com/file/24394419/1851684883.rar

http://depositfiles.com/files/g6wawevha

请帮我解决它

+1

为了帮助解决这个问题,我们需要知道它应该做的,它是做什么的。 – 2010-10-12 08:15:41

+0

我想要回显$ html1中的所有下载链接 – Thoman 2010-10-12 08:17:38

回答

2

两个问题:

for ($i; $i <= count($download); $i++) { 

// You are re-initializing $return in the loop..overwriting it. 
    $return = "download|"; 

只需推动动初始化外循环为:

$return = "download|"; 
for ($i; $i <= count($download); $i++) { 

而且你不应该使用<=

for ($i; $i <=count($download) 

它应该只是<。这是因为在大小为N的数组中,N不是有效的索引。有效索引为0N-1

另外ereg功能家族已弃用5.3.0,所以它最好停止使用它们。您可以改用preg_match

if (!preg_match("/avaxhome\.ws|pixhost\.info/i", $links)) 

还要注意的是,在正则表达式的.需要转义把它当作文字句:

if (!eregi("avaxhome.ws|pixhost.info", $links)) 

可以使用preg_match作为被写入。

Working link