在我的计算机上的某个地方,我有一个用于显示基于日期的图像的PHP脚本,这将允许我在特定日期或所选日期之间显示不同的图像,并在当前日期不显示时显示默认日期列出一个要显示的特定图像。
我最近遇到了一个我的硬盘驱动器出现问题并丢失了大量文件,我担心这个脚本是其中之一,因为我无法在任何地方找到它。
我不记得我在哪里找到了这个剧本。我在网上看了一遍,再也找不到了。我以为它就在这里,但在搜索之后我找不到任何模糊的东西,更不用说脚本本身了。 < _<
也许我使用了错误的搜索词(我一直在尝试像“php显示图像日期”这样的东西),但我找不到类似的东西。
有没有人知道任何符合上述描述的内容,或者可以建议最好的方法来做到这一点?
我认为我需要为当前日期指定的特定图像指定一个默认图像,并且可能是一个案例/中断代码块可能是比if / else ....更好的方法。 / p>
有人对最佳方法有任何想法吗?
编辑:感谢大家的建议。我并不是特别热衷于使用if / else / elseif,但最终它似乎是实现它的最简单方法。我完成它的方式可能不是代码最有效的方式,但它现在可以工作。
(部分代码 - 它相当长,所以我不会厌烦你)
“嗯......”好的,谢谢。这就解释了为什么我试图做的不起作用! :洛尔:虽然我已经看到了其他方法,包括foreach循环和GD,但最后我坚持使用if / elseif / else。这可能不是代码执行方式最有效的方式,但这最终有效(代码的一部分 - 这是一个非常长的列表,我不会厌烦你所有的!):
<?php
// Macmillan Cancertalk week (21-25 Jan)
if ((date('m') == 01) && (date('d') >= 21) || (date('m') == 01) && (date('d') <= 23)) {
echo "<img src=\"images/ribbons/cancertalk.gif\" height=\"145\" width=\"175\" alt=\"Macmillan Cancertalk\" /><br /><h6 class=\"awareness\">Macmillan Cancertalk Week <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
}
// Macmillan Cancertalk week (21-25 Jan) and Cervical Cancer Awareness Week (24-30 Jan)
else if ((date('m') == 01) && (date('d') == 24)) {
echo "<img src=\"images/ribbons/macmillan_cervical.gif\" height=\"145\" width=\"175\" alt=\"Macmillan Cancertalk and white and teal awareness ribbons\" /><br /><h6 class=\"awareness\">Macmillan Cancertalk Week & Cervical Cancer Awareness Week <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
}
// Macmillan Cancertalk week (21-25 Jan), Cervical Cancer Awareness Week (24-30 Jan) and Beating Bowel Cancer - Be Loud Be Clear Week (25-31 Jan)
else if ((date('m') == 01) && (date('d') == 25)) {
echo "<img src=\"images/ribbons/macmillan_cervical_bowel.gif\" height=\"145\" width=\"175\" alt=\"Macmillan Cancertalk, white & teal awareness ribbons, and blue & brown cancer awareness ribbons\" /><br /><h6 class=\"awareness\">Macmillan Cancertalk Week, Cervical Cancer Awareness Week, and Be Loud Be Clear Week (Beating Bowel Cancer) <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
}
// Beating Bowel Cancer - Be Loud Be Clear Week (25-31 Jan)
else if ((date('m') == 01) && (date('d') == 31)) {
echo "<img src=\"images/ribbons/brown_blue_ribbon.gif\" height=\"145\" width=\"175\" alt=\"blue and brown cancer awareness ribbons\" /><br /><h6 class=\"awareness\">Be Loud Be Clear Week (Beating Bowel Cancer) <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
}
// International Childhood Cancer Day (15 Feb)
else if ((date('m') == 02) && (date('d') == 15)) {
echo "<img src=\"images/ribbons/gold_ribbon.gif\" height=\"145\" width=\"175\" alt=\"gold cancer awareness ribbons\" /><br /><h6 class=\"awareness\">International Childhood Cancer Day <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
}
// Gynaecological Cancers Campaign (1 Feb to 31 March)
else if ((date('m') == 02) && (date('d') >= 01) || (date('m') == 02) && (date('d') <= 28)) {
echo "<img src=\"images/ribbons/teal_ribbon.gif\" height=\"145\" width=\"175\" alt=\"teal cancer awareness ribbons\" /><br /><h6 class=\"awareness\">Gynaecological Cancers Campaign (1st February – 31st March) <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
}
else {
echo "<a class=\"awareness_link\" href=\"the-bookstall-cancer-links-and-resources.php\"><img src=\"images/ribbons/default_ribbon.gif\" height=\"145\" width=\"175\" alt=\"calendar\" /><br /><h6 class=\"awareness\">Check our awareness calendar for information about awareness events – <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6></a>";
}
?>
答案 0 :(得分:5)
您可以使用date()
函数检查当前月/日/年以及一些简单的if / else结构来显示不同的图像。
答案 1 :(得分:3)
最好的方法可能只是使用GD来显示它。
<?php
// Create a 75*15 image
$im = imagecreate(75, 15);
// White background and black text
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 0);
// Write the date at the top left, offset by 2px to the right
imagestring($im, 5, 2, 0, date("m/d/y"), $textcolor);
// Output the image
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
答案 2 :(得分:2)
听起来你之前正在复制/粘贴你的代码,但如果你想要它,这真的是一个很好的片段。您正在寻找的基本构造是:
$today = getdate();
$day = $today['wday'];
if ($day == 1 OR $day == 2 OR $day == 3){
echo "<img src='whatever image you want'>";
}
elseif ($day == 4 OR $day ==5){
echo "<img src='another image' />";
}
else { echo "<img src='default image' />";}
基本上,您可以找到日期,并使用IF / ELSE循环来确定今天是在一个范围内还是在另一个范围内。如果是,请回显您想要显示的图像。
在此示例中,变量$ day设置为数字1-7。 1 ==星期一,2 = =星期二,3 = =星期三...如果是星期二星期二或星期三,它会显示一张图像,(if ($day == 1 OR $day == 2 OR $day == 3)
行),星期四/星期五显示另一张图像,否则显示“默认”图片,显示在周末。显然,这不是你想要的日期/日期的确切情况,但像这个结构的东西会帮助你。
查看PHP Date reference以获取有关选择要比较的日期的帮助。
答案 3 :(得分:1)
switch(date('Y-m-d')) {
// multiple dates with same image
case '2010-02-15':
case '2010-02-07':
print '<img src="/path/to/image.jpg" alt="" />';
break;
// really long ranges don't work all that well in this solution
case '2010-03-01':
case '2010-03-02':
case '2010-03-03':
case '2010-03-04':
case '2010-03-05':
case '2010-03-06':
case '2010-03-07':
case '2010-03-08':
case '2010-03-09':
case '2010-03-10':
print '<img src="/path/to/image.jpg" alt="" />';
break;
// specific date image
case '2010-12-25':
print '<img src="/path/to/christmas.jpg" alt="" />';
break;
// fallback image
default:
print '<img src="/path/to/default.jpg" alt="" />';
break;
}
如果你做了很多大的日期范围,那么它会崩溃,但它适用于一些小范围和特定日期。
答案 4 :(得分:1)
这是我的解决方案,我拜访也许你不关心哪一年,所以这个解决方案只考虑月份和日期:
function image_of_date($default, $options) {
$today = date('md');
foreach ($options as $item) {
$src = $item[0];
$begin = $item[1];
$end = (3===count($item))? $item[2] : $begin;
$begin = date('md', strtotime($begin));
$end = date('md', strtotime($end));
if ($today >= $begin && $today <= $end) {
return $src;
}
}
return $default;
}
echo image_of_date('default.png', array(
array('jan-01.png', 'Jan 1'),
array('feb.png', 'Feb 1', 'Feb 29')
));
答案 5 :(得分:0)
您是否考虑使用循环播放的数组?
$events = array(
array(
'image' => 'img/1.png',
'start' => '01-02-2014',
'end' => '02-02-2014'
),
array(
'image' => 'img/2.png',
'start' => '03-02-2014',
'end' => '04-02-2014'
)
);
然后你只需用
继续foreach($events as $event) {
if(date('d-m-Y') >= $event['start'] && date('d-m-Y') <= $event['end']) {
echo "<img src='".$event['image']."'>";
}
}
希望这对您来说更简单/更清洁。当然,您可以在阵列中添加任何其他详细信息。
〜詹姆斯。
答案 6 :(得分:0)
小心使用包含前导零的两位数日期。 PHP 将其解释为八进制数字,如果使用 '08' 和 '09',它将返回错误。当我试图将 9 月设置为我的 elseif 案例的月份时,我发现了这一点。
答案 7 :(得分:0)