Intelligent Menus

Released on November 7, 2003.
Last Updated: November 7, 2003 2:58 PM
Version: 1.5


Using some very simple PHP and CSS you can create intelligent menus that are easy to use and maintain.


Pop your code, one link per line, into the $menu variable and then put the rest wherever you want your menu to appear.


Intelligent Menu Code

$menu = <<<MENU
<ul id="nav">
    <li><a href="/" title="Where the heart is">Home</a></li>
    <li><a href="/archives/" title="Things that have passed.">Archives</a></li>
    <li><a href="/about/" title="All about Matt">About</a></li>
    <li><a href="/photos/" title="It's the 'photo' in Matt">Photos</a></li>
    <li><a href="/music/" title="The food of love">Music</a></li>
    <li><a href="/scripts/" title="Free (as in beer and speech) code">Scripts</a></li>
    <li><a href="/jazzquotes/" title="Great quotes from amazing musicians. More in the future.">Jazz Quotes</a></li>
    <li><a href="/toys/" title="Make me tick: Reviews of various electronics I own or have come into contact with.">Toys</a></li>
    <li><a href="/xml/" title="Syndicate the content here. Get Matt to-go.">Syndicate</a></li>
    <li><a href="/portal/" title="My personal start page, has my blogroll and links to interesting sites">Portal</a></li>
    <li><a href="/zeitgeist/" title="A google of random stats about the website">Zeitgeist</a></li>
    <li><a href="/contact/" title="Reach out and touch somebody. How to get in contact with me, also has GPG key and geek code.">Contact</a></li>

$lines = split("\n", $menu);
foreach ($lines as $line) {
    $current = false;
    preg_match('/href="([^"]+)"/', $line, $url);
    if (substr($_SERVER["REQUEST_URI"], 0, 5) == substr($url[1], 0, 5)) {
        $line = str_replace('<a h', '<a id="current" h', $line);
    echo $line."\n";