2012-10-03 49 views
1

我正在练习从一些第三方网站用html解析器抓取数据。当我通过给定的标签进行循环时,我使用mkdir()函数创建一个以循环中正在使用的变量之一命名的新文件夹。我的代码如下:mkdir()函数给出无效的参数错误

foreach($s->find('a') as $t) 
{ 
    $inner = $t->plaintext; 
    if(!is_dir("img/ncaa/".$team."") 
    && !file_exists("/img/ncaa/".$team."/".substr($inner, 0, 4).".png")) 
    { 
     foreach($t->find('img') as $l) 
     { 
       $url = $l->src; 
     } 

     mkdir("img/ncaa/".$team.""); 

     $img = "/img/ncaa/".$team."/".substr($inner, 0, 4).".png"; 
     file_put_contents($img, file_get_contents($url)); 
    } 
} 

我得到一个错误信息阅读:警告命令mkdir()[function.mkdir]:无效的参数在

当我注释掉所有上面的代码和简单地写

mkdir("img/ncaa/Boston Celtics"); 

这似乎工作。我想了一下,它可能与权限有关,但事实并非如此。

有什么建议吗?

+0

如果你'回声$团队;'在视图源中它说'波士顿%20Celtics'? –

+0

不。它没有。我认为这也可能是问题。 – Lance

+0

'var_dump($ team);'并检查字符串长度是否匹配。 – air4x

回答

0

运行此相反:

foreach($s->find('a') as $t) 
{ 
    $inner = $t->plaintext; 
    if(!is_dir("img/ncaa/".$team."") 
    && !file_exists("/img/ncaa/".$team."/".substr($inner, 0, 4).".png")) 
    { 
     foreach($t->find('img') as $l) 
     { 
       $url = $l->src; 
     } 

     $theDir = "img/ncaa/".$team.""; 
     var_dump($theDir); 
     mkdir($theDir); 

     $img = "/img/ncaa/".$team."/".substr($inner, 0, 4).".png"; 
     file_put_contents($img, file_get_contents($url)); 
    } 
} 

和检查输出,它可能会显示错误

+0

这一点有点作品。它不会给我任何错误信息,但它不是也创建文件夹... – Lance

0

我不知道为什么在你的一些指令使用相对路径,例如:

$theDir = "img/ncaa/".$team.""; 

而在其他的你使用的是像绝对路径:

$img = "/img/ncaa/".$team."/".substr($inner, 0, 4).".png"; 

您必须选择一种策略:绝对路径或相对路径。混合这两种方法会在你的程序中造成混乱,我相信这就是你的mkdir不工作的原因。

0

在foreach循环之前,打印$团队值。如果该值为空,则在for-each循环前面用$ team =“Boston Celtics”明确设置它,看看它是否有效。

+0

仍然是一样的... – Lance

+0

什么是打印$团队的输出; ? – janenz00