mkdir()函数给出无效参数错误

时间:2012-10-03 07:11:33

标签: php

我正在练习使用html解析器从某些第三方网站抓取数据。当我通过给定标签循环时,我使用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");

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

有什么建议吗?

3 个答案:

答案 0 :(得分: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));
    }   
}

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

答案 1 :(得分:0)

我想知道为什么在某些说明中你使用相对路径,例如:

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

在其他人中,你使用的绝对路径如下:

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

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

答案 2 :(得分:0)

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