0

我尝试制作一个脚本,该脚本可以将具有名称模式的网页中的所有文件保存到服务器。

<?php

$base_url = "http://www.someurl.com/";
$sufix = ".jpg";
$id_start= "Name Numberstart"; //Picture 1 
$id_end = "Name Numberend"; // Picture 235
$path_to_save = "filer/";

foreach(range($id_start, $id_end) as $id) {
    file_put_contents($path_to_save.$id.$sufix, file_get_contents($base_url.$id.$sufix));
}

?>

如果我只使用id数字等 1-20 或 50 - 60 等,则脚本可以完美运行。但是当我在前面有一个名字和空白时,它似乎不起作用。它只保存 1 个文件并停止。

4

1 回答 1

0

根据 php.net 对range的描述:

字符序列值的长度限制为 1。如果输入的长度大于 1,则仅使用第一个字符。

我认为这意味着

range("Name Numberstart", "Name Numbersend") == array("N");

如果我们以交互方式运行 php,则可以确认:

php > $var = range("Name Numberstart", "Name Numbersend");
php > var_dump($var);
array(1) {
  [0]=>
  string(1) "N"
}

所以基本上,你实际上得到了第一个单词的第一个字符到第二个单词的第一个字符的范围。如果我们把第二个词改成“漂亮”,我们得到:

php > var_dump(range("Name Numberstart", "Pretty Numbersend"));
array(3) {
  [0]=>
  string(1) "N"
  [1]=>
  string(1) "O"
  [2]=>
  string(1) "P"
}
于 2015-05-21T15:17:34.220 回答