使用1000个网址列表生成随机图像地图坐标

时间:2011-10-18 17:50:59

标签: php javascript xml

您好我有透明图片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;

?>

2 个答案:

答案 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>';

这不应该让你陷入内存问题,因为没有无限循环,它直接回显到浏览器,这有助于不会遇到内存限制。

Demo