复制PHP代码块

问题描述:

我从特定的URL图像。这个脚本能够在我的网站上显示它们而没有任何问题。我从网站上获得的图像有多个(约200)页,我需要的图像。复制PHP代码块

我不想手动每次从1复制的PHP代码块,并在页面数填写200是否有可能做到这一点在一块?

赞:$ html = file_get_html('http://example.com/page/1 ...至... 200');

<?php 

require_once('simple_html_dom.php'); 
$html = file_get_html('http://example.com/page/1'); 
foreach($html->find('img') as $element) { 
    echo '<img src="'.$element->src.'"/>'; 
} 

$html = file_get_html('http://example.com/page/2'); 
foreach($html->find('img') as $element) { 
    echo '<img src="'.$element->src.'"/>'; 
} 

$html = file_get_html('http://example.com/page/3'); 
foreach($html->find('img') as $element) { 
    echo '<img src="'.$element->src.'"/>'; 
} 
?> 
+0

简单的事情,使用循环计数器变量改变页码 –

您可以使用一个for循环,像这样:

require_once('simple_html_dom.php'); 
for($i = 1; $i <= 200; $i++){ 
    $html = file_get_html('http://example.com/page/'.$i); 
    foreach($html->find('img') as $element) { 
     echo '<img src="'.$element->src.'"/>'; 
    } 
} 

所以,现在你有一个代码块,将执行200次。

它通过将$i的值附加到url来更改页码,并且每当循环完成一轮时,$i的值将变为$i + 1

如果您希望从更高的页码开始,您可以将$i = 1的值更改为$i = 2或任何其他号码,并且您可以将200更改为您的情况的最大值。

+0

但这并不做第2页..-> ... N – Martijn

+0

@Martijn在他的榜样,他确实页面1 ..-> ..这就是为什么我也保持这一点。 – FMashiro

首先,它们存储在数据库中。您可以(/应该)将图像下载到您自己的服务器,或者将uri存储到图像中。您可以使用类似FMashiro's这样的代码或类似的代码,但打开200页并解析它们的HTML需要永久。每个网页浏览。

然后你只需使用LIMIT functionallity在查询自己创建的页面。

我反正推荐此方法,因为这会比解析HTML每次有人打开这个网页速度更快。你会有排序选项和其他专业的数据库给你。

+0

尽管这是事实,但如果您通过检索数据的网站定期更改其网页内容,则它很快就会变得很糟糕。 – FMashiro

+0

究竟是凌乱你的答案,包括获取,我建议你的代码来做到这一点;)如果OP无二的下载版本,所需要的是一个取。 – Martijn

+0

我只是意味着在您自己的服务器上存储其他网站的数据很难管理,因为您(可能非法)下载内容的网站可能会定期更改其网页。因此,如果您希望至少保持服务器的稳定性,那么记住最新的数据将非常困难。你会有大量重复或过时的数据。 – FMashiro

有很多很好的解决方案,对他们的:尽量让一个循环,从1到200

for($i = 1; $i <= 200; $i++){ 
    $html = file_get_html('http://example.com/page/'.$i); 
    foreach($html->find('img') as $element) { 
     echo '<img src="'.$element->src.'"/>'; 
    } 
} 
+0

每一个pagehit,你的代码将打开200页,并解析所有的HTML。这将需要很长时间,占用你所有的资源和其他一些站点,这可能会阻止你。 – Martijn

+0

@Martijn绝对你是对的,这是一个可怕的工作来解析这个页面数量,但他只是要求一种方式来循环他们,所以我的回答是基于req问题。 :) – Mohammad

+0

哈哈确实,但我不认为OP即使这个遥遥领先 – Martijn

<?php 
function SendHtml($httpline) { 
    $html = file_get_html($httpline); 
foreach($html->find('img') as $element) { 
    echo '<img src="'.$element->src.'"/>'; 
} 
} 


for ($x = 1; $x <= 200; $x++) { 
$httpline="http://example.com/page/"; 
$httpline.=$x; 
SendHtml($httpline); 
} 

?> 

只是循环。创建发送功能并循环拨打电话。 我建议你阅读所有的PHP实况在https://www.w3schools.com/php/default.asp

+0

很好的例子。重新使用。 – Kray

+0

可以使用一些格式,你应该只需将增量变量添加到'$ httpline'的定义中,而不是将其作为第二行,并在那里进行连接以提高可读性。 – FMashiro

+0

@FMashiro毫无疑问你是正确的,但是,对于一个不知道如何做循环的人来说,我试图成为一个容易的老师,这也是连接到w3schools的原因=) –