PHP-如何从提取的URL IMGS

时间:2017-05-18 23:06:25

标签: php fetch

所以我有点陷入困境,而且我得到了各种解决方案,但都没有。任何热门的PHP人员都在那里?这是交易,我正试图在我的网站上显示一个图像,来自另一个网站,它有一个随机生成的IMG。虽然我实际上是想在我的个人艺术网站上做这件事,但这个例子将完美地发挥作用。 http://commons.wikimedia.org/wiki/Special:Random/File

带有图像的随机图像页面会弹出该链接。现在,我想在另一个网站上显示随机图像或任何图像。我遇到的两个可能的解决方案是从给定链接收集URL LINKS数组。然后在另一个网站上将该数组显示为图像,例如:< a href =“https

我从我正在谈论的内容中得到的代码如下:

Array
(
[0] => https ://kfjhiakwhefkiujahefawef/awoefjoiwejfowe.jpg
[1] => https ://oawiejfoiaewjfoajfeaweoif/awoeifjao;iwejfoawiefj.png

)
然而,不是打印输出,而是我想要显示的实际图像,特别是数组[0],但一次只能做一件事。实际执行此操作的代码是:

<?php
/*
Credits: Bit Repository
URL: http://www.bitrepository.com/
*/

$url = 'http://commons.wikimedia.org/wiki/Special:Random/File';

// Fetch page
$string = FetchPage($url);

// Regex that extracts the images (full tag)
$image_regex_src_url = '/<img[^>]*'.

'src=[\"|\'](.*)[\"|\']/Ui';

preg_match_all($image_regex, $string, $out, PREG_PATTERN_ORDER);

$img_tag_array = $out[0];

echo "<pre>"; print_r($img_tag_array); echo "</pre>";

// Regex for SRC Value
$image_regex_src_url = '/<img[^>]*'.

'src=[\"|\'](.*)[\"|\']/Ui';

preg_match_all($image_regex_src_url, $string, $out, PREG_PATTERN_ORDER);

$images_url_array = $out[1];

echo "<pre>"; print_r($images_url_array); echo "</pre>";

// Fetch Page Function

function FetchPage($path)
{
$file = fopen($path, "r"); 

if (!$file)
{
 exit("The was a connection error!");
} 

$data = '';

 while (!feof($file))
{
// Extract the data from the file / url

$data .= fgets($file, 1024);
}
return $data; 
}




for($i=0; $i<count($arr1); $i++) {
echo '<img src="'.$arr1[$i].'">';
}

?>

解决方案二, 使用file_get_contents命令。这是:

<?php

$html = 
file_get_contents("http://commons.wikimedia.org/wiki/Special:Random/File");

libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$image_src =  $xpath->query('//div[contains(@class,"fullImageLink")]/a/img')
[0]->getAttribute('src') ;
echo "<img src='$image_src'><br>";


?>

然而,遗憾的是我收到的错误消息:致命错误:不能在第11行的/home/wilsons888/public_html/wiki.php中使用DOMNodeList类型的对象作为数组。或者,如果我删除了“}”结束,我只是得到一个空白页。

我被告知上面的代码可以使用,但包含openssl扩展名。问题是,我不知道该怎么做。 (我对PHP很新)。任何人都知道如何插入它,可以这么说?非常感谢!我觉得我很接近,只是错过了最后一个元素。

1 个答案:

答案 0 :(得分:1)

我能够加载随机图像,&#34;打印它&#34;直接使用此代码作为图像(因此您可以将php文件直接嵌入IMG标记):

<?php
    $html = file_get_contents("http://commons.wikimedia.org/wiki/Special:Random/File");
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    $remoteImage = $dom->getElementById("file")->firstChild->attributes[0]->textContent;
    header("Content-type: image/png");
    header('Content-Length: ' . filesize($remoteImage));
    echo file_get_contents($remoteImage);
?>

获取一个名为showImage.php的新文件并将此代码放入其中:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<img src="test.php">
</body>
</html>

接下来,转到您的浏览器并获取showImage.php路径,并在您询问的网站上显示随机图片...