随机显示一个HTML片段从列表与PHP



正如标题所暗示的,我有几行不同的HTML代码(示例如下),我希望服务器随机选择一个并在页面加载时显示它。

我有这三个HTML片段,我想在页面加载时随机显示一个。

<img src=“image1.png” alt=“image1”>
<p class=“class1”>Image Caption<a href=“link1”> And Link</a></p>
<img src=“image2.png” alt=“image2”>
<p class=“class2”>Image Caption<a href=“link2”> And Link</a></p>
<img src=“image3.png” alt=“image3”>
<p class=“class3”>Image Caption<a href=“link3”> And Link</a></p>

我发现这个例子使用PHP数组函数,但我不知道如何把数组放在一个单独的PHP文件,或者如果我可以改变图像链接到完整的HTML代码。

我找到的例子:

<?php
$images = array('img1.jpg', 'img2.jpg', 'img3.jpg');
?>

然后,从数组

中得到一个随机元素
<?php
$random_image = array_rand($images);
?>

然后你可以马上显示图像:

<img src="<?php echo $images[$random_image]; ?>" />

我怎样才能使上面的HTML片段存储在数组中,而数组在另一个PHP文件中(我可以使用" require "函数,对吧?)

你可以像回显属性值一样回显任意数量的html代码。

您可以使用require访问另一个文件中定义的数组。

<?php
$images = require 'images_array.php';
echo $images[array_rand($images)];
?>

images_array.php:

array(
'<img src=“image1.png” alt=“image1”><p class=“class1”>Image Caption<a href=“link1”> And Link</a></p>',
'<img src=“image2.png” alt=“image2”><p class=“class2”>Image Caption<a href=“link2”> And Link</a></p>',
'<img src=“image3.png” alt=“image3”><p class=“class3”>Image Caption<a href=“link3”> And Link</a></p>',
);

我建议您避免使用冗余的html标记使文件变得臃肿。与其重复,不如练习D.R.Y.原则,将所有可变部分与静态部分分开。

使用查找数组和模板字符串可以提高可维护性,并减少出现拼写错误的可能性。

代码(演示):

$lookup = [
1 => [
'img' => 'image1.png',
'alt' => 'image1',
'class' => 'class1',
'caption' => 'Image Caption',
'href' => 'link1',
'linkText' => 'And Link',
],
2 => [
'img' => 'image2.png',
'alt' => 'image2',
'class' => 'class2',
'caption' => 'Image Caption',
'href' => 'link2',
'linkText' => 'And Link',
],
3 => [
'img' => 'image3.png',
'alt' => 'image3',
'class' => 'class3',
'caption' => 'Image Caption',
'href' => 'link3',
'linkText' => 'And Link',
],
];
$markup = '<img src="%1$s" alt="%2$s">
<p class="%3$s">%4$s <a href="%5$s">%6$s</a></p>';
vprintf($markup, $lookup[array_rand($lookup)]);

潜在产出:

<img src="image3.png" alt="image3">
<p class="class3">Image Caption <a href="link3">And Link</a></p>

如果您想将数组存储在另一个文件中,没问题。只要确保返回被require编辑的文件中的数组即可。示例

lookup.php

<?php
return [1 => [...], 2 => [...], 3 => [...]];

markup.php

<?php
$lookup = require 'lookup.php';
$markup = '<img src="%1$s" alt="%2$s"><p class="%3$s">%4$s <a href="%5$s">%6$s</a></p>';
vprintf($markup, $lookup[array_rand($lookup)]);

当你似乎有纯PHP和没有模板引擎,你可以这样做:

<?php
$random = rand(0,60);
if ($random < 20) {
?>
<img src=“image1.png” alt=“image1”>
<p class=“class1”>Image Caption<a href=“link1”> And Link</a></p>
<?php
} elseif ($random < 40) {
?>
<img src=“image2.png” alt=“image2”>
<p class=“class2”>Image Caption<a href=“link2”> And Link</a></p>
<?php
} else {
?>
<img src=“image3.png” alt=“image3”>
<p class=“class3”>Image Caption<a href=“link3”> And Link</a></p>
<?php
}
?>

它将在每次页面加载时显示一个随机的部分。

最新更新