0

我正在练习使用 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));
    }   
}

我收到一条错误消息:Warning: mkdir() [function.mkdir]: Invalid argument in

当我注释掉以上所有代码并简单地写

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

这似乎行得通。我想了一会儿,它可能与权限有关,但事实并非如此。

有什么建议么?

4

3 回答 3

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));
    }   
}

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

于 2012-10-03T07:14:10.807 回答
0

在 foreach 循环之前,打印您的 $team 值。如果该值为空,请在 for-each 循环之前使用 $team = "Boston Celtics" 显式设置它并查看它是否有效。

于 2012-10-03T07:39:25.287 回答
0

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

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

在其他人中,您使用的是绝对路径,例如:

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

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

于 2012-10-03T07:17:24.747 回答