所以我有点陷入困境,而且我得到了各种解决方案,但都没有。任何热门的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很新)。任何人都知道如何插入它,可以这么说?非常感谢!我觉得我很接近,只是错过了最后一个元素。
答案 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路径,并在您询问的网站上显示随机图片...