php随机跳转到某一图片链接

引言

本文章首发于博主的个人网站

在WordPress的Sakurairo主题中,可以设置随机封面图片的api地址。
在这里插入图片描述

初始时就设定好了两个api链接,分别适配pc端和移动端的封面大小。

每次在浏览器打开上面的链接,都会随机返回一张图片。不过,与之前 随机句子直接返回显示方式不同,这个api是每次访问会自动调转到某一图片链接,即使不断刷新,显示的还是同一张图片。从地址栏可以发现访问的链接的地址已经从(xxx.php)变成了图片的链接地址(xxx.webp)。

  • 示例:
    在这里插入图片描述

直接显示(不适用于主题)

参考来源/转载自:CSDN 「海拥✘」

思路:
(1)准备图片放入文件夹中。(示例:网站/random/imagesapi/pcbg文件夹)
(2)同路径下新建index.php文件(示例:网站/random/imagesapi/index.php),,使得访问该路径时就能默认访问index.php
(3)编写index.php,使其随机显示一张文件夹中的图片。
(4)上传以上文件到网站服务器,通过访问到路径即可。(示例:https://www.georgewahson.club/random/imagesapi/)

  • index.php代码解释:
  • 图片文件夹路径:
$imageFolder = 'image/';
  • 获取图片文件列表:
$imageFiles = scandir($imageFolder);
  • 过滤掉".“和”.."目录:
$imageFiles = array_diff($imageFiles, array('..', '.'));
  • 随机选择一张图片:
$randomImage = $imageFiles[array_rand($imageFiles)];
  • 图片显示:
echo '<img src="' . $imageFolder . $randomImage . '" alt="随机图片">';

完整代码:

<!DOCTYPE html>
<html>
<head>
    <title>随机调用图片</title>
</head>
<body>
    <?php
    // 图片文件夹路径
    $imageFolder = 'image/';
    
    // 获取图片文件列表
    $imageFiles = scandir($imageFolder);
    
    // 过滤掉"."和".."目录
    $imageFiles = array_diff($imageFiles, array('..', '.'));
    
    // 随机选择一张图片
    $randomImage = $imageFiles[array_rand($imageFiles)];
    
    // 图片显示
    echo '<img src="' . $imageFolder . $randomImage . '" alt="随机图片">';
    ?>
</body>
</html>

虽说我不懂PHP,但多少能看得出来,上面的HTML标签使得整个窗口显示被返回的图片。用来替换Sakurairo主题封面的外部api是无效的。(起码从前者访问后地址不变,后者访问后地址发生了变化上也能够看出)

那假如去掉html标签呢( {{guilian}} doge),笑死,效果是一样的。index.php代码中的echo就决定了这图片是被显示出来的。


正确方式:跳转链接

以下回答来自 百度文心一言

提问:
需求:现有一个images文件夹,内有照片若干1.jpg2.jpg等等,通过网页 www.test.com/images/1.jpg 即可在线访问照片中的照片,请你编写pc.php文件,通过访问 www.test.com/pc.php 即可随机跳转到某一个图片的链接。请注意,是实现链接的跳转至 www.test.com/images/x.jpg ,而不是返回图片。


回答:
你可以使用PHPrand()函数来随机生成一个图片文件名,并将其添加到你的图片文件夹的URL后面。以下是一个简单的示例:

<?php  
$images = glob('images/*.jpg'); // 获取images文件夹下所有的.jpg文件  
if(count($images) > 0) {  
    $randomImage = $images[array_rand($images)]; // 随机选择一个图片  
    header('Location: http://www.test.com/images/' . $randomImage); // 跳转到随机图片的URL  
} else {  
    echo '没有找到任何图片';  
}  
?>

这个脚本首先获取images文件夹下的所有.jpg文件,然后从数组中随机选择一个元素。然后,它使用PHPheader()函数将用户的浏览器重定向到随机选择的图片URL

请注意,此脚本假设你的图片文件都在"images"文件夹中,且所有的图片文件都是.jpg格式。如果你的情况不同,那么你可能需要修改脚本以适应你的环境。

还要注意的是,因为header()函数需要在输出任何内容之前使用,所以如果你在你的脚本中已经有了一些输出(例如在脚本的开头部分),那么你可能会遇到问题。为了避免这种问题,你可以将这段代码放在你的脚本的顶部,或者在任何可能产生输出的地方使用ob_start()函数。


此时,将通过访问该php文件(点我试试)即可实现和主题默认api同样的功能。唯一不同的是示例代码中给的是jpg这一单一图片格式。(其实大部分情况下,用做图片背景的图片一般格式都是一致的,如统一使用webp。)但,如果非要使用不同格式的图片,那么把代码第二行中的.jpg改为*即可:

$images = glob('pcbg/*');

附录

同一个问题,我也一字不差的问了 阿里通义千问进行比较。结果非常差劲,一眼就能看出来它给的代码有问题。即使重新生成重新提问也是一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值