您好我有透明图片995x100px和1000个网址列表。 我想用所有这些网址制作imagemap。 我知道如何手动完成,但问题是我有1000个网址,所以我想生成 1000个随机坐标,并将所有网址放在里面。
<?php
$urls = array("www.link1.com", "www.link2.com " , "www.link3.com","www.link4.com");
shuffle($urls); // randomize the urls
// start the image map
$map = <<<EOL
<img src="links.png" width="998" height="100" border="0" usemap="#mymap" />
<map name="mymap">
EOL;
$i = 0;
for ($y = 0; $y = $y + 10; $y < 100) {
for ($x = 0; $x = $x + 10; $x < 995) {
$bot_x = $x + 9;
$bot_y = $y + 9;
$map .= <<<EOL
<area shape="rect" coords="{$x},{$y},{$bot_x},{$bot_y}" href="{$urls[$i]}" />
EOL;
$i++;
}
}
$map .= <<<EOL
</map>
EOL;
echo $map;
?>
答案 0 :(得分:0)
$urls = array(....);
shuffle($urls); // randomize the urls
// start the image map
$map = <<<EOL
<map name="mymap">
EOL;
$i = 0;
for ($y = 0; $y = $y + 10; $y < 100) {
for ($x = 0; $x = $x + 10; $x < 995) {
$bot_x = $x + 9;
$bot_y = $y + 9;
$map .= <<<EOL
<area shape="rect" coords="{$x},{$y},{$bot_x},{$bot_y}" href="{$urls[$i]}" />
EOL;
$i++;
}
}
$map .= <<<EOL
</map>
EOL;
echo $map;
答案 1 :(得分:0)
只需为每个网址输出一个<area>
,然后继续执行$x
步骤。如果$x
达到每行的最大值,请再次将$x
设置为0
并增加$y
。继续,直到您处理完所有网址:
$urls = array(/*... 1000 urls ... */);
shuffle($urls); // randomize the urls
// start the image map
echo '<map name="mymap">';
// output all areas
$area = 10;
$width = 940;
$aw = $area-1; // temp
$iw = (int) $width / $area;
foreach($urls as $i => $url)
{
$x = $area * ($i % $iw);
$y = $area * (int) ($i / $iw);
printf('<area shape="rect" coords="%d,%d,%d,%d" href="%s" />', $x, $y, $x+$aw, $y+$aw, $urlPrefix.$url);
}
// end the image map
echo '</map>';
这不应该让你陷入内存问题,因为没有无限循环,它直接回显到浏览器,这有助于不会遇到内存限制。