我正在练习使用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");
这似乎有效。我想了一下它可能与权限有关,但事实并非如此。
有什么建议吗?
答案 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”明确设置它,看看它是否有效。