190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<?php
290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/**
390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * GeSHi example script
490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *
590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * Just point your browser at this script (with geshi.php in the parent directory,
690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * and the language files in subdirectory "../geshi/")
790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *
890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * @author  Nigel McNie
990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * @version $Id: example.php 1512 2008-07-21 21:05:40Z benbe $
1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber */
1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberheader('Content-Type: text/html; charset=utf-8');
1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubererror_reporting(E_ALL);
1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// Rudimentary checking of where GeSHi is. In a default install it will be in ../, but
1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// it could be in the current directory if the include_path is set. There's nowhere else
1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// we can reasonably guess.
1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif (is_readable('../geshi.php')) {
1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $path = '../';
2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} elseif (is_readable('geshi.php')) {
2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $path = './';
2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} else {
2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    die('Could not find geshi.php - make sure it is in your include path!');
2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberrequire $path . 'geshi.php';
2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$fill_source = false;
2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif (isset($_POST['submit'])) {
2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if (get_magic_quotes_gpc()) {
3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        $_POST['source'] = stripslashes($_POST['source']);
3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if (!strlen(trim($_POST['source']))) {
3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        $_POST['language'] = preg_replace('#[^a-zA-Z0-9\-_]#', '', $_POST['language']);
3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        $_POST['source'] = implode('', @file($path . 'geshi/' . $_POST['language'] . '.php'));
3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        $_POST['language'] = 'php';
3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    } else {
3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        $fill_source = true;
3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // Here's a free demo of how GeSHi works.
4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // First the initialisation: source code to highlight and the language to use. Make sure
4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // you sanitise correctly if you use $_POST of course - this very script has had a security
4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // advisory against it in the past because of this. Please try not to use this script on a
4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // live site.
4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi = new GeSHi($_POST['source'], $_POST['language']);
4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // Use the PRE_VALID header. This means less output source since we don't have to output &nbsp;
4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // everywhere. Of course it also means you can't set the tab width.
5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // HEADER_PRE_VALID puts the <pre> tag inside the list items (<li>) thus producing valid HTML markup.
5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // HEADER_PRE puts the <pre> tag around the list (<ol>) which is invalid in HTML 4 and XHTML 1
5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // HEADER_DIV puts a <div> tag arount the list (valid!) but needs to replace whitespaces with &nbsp
5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    //            thus producing much larger overhead. You can set the tab width though.
5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_header_type(GESHI_HEADER_PRE_VALID);
5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // Enable CSS classes. You can use get_stylesheet() to output a stylesheet for your code. Using
5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // CSS classes results in much less output source.
5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->enable_classes();
5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // Enable line numbers. We want fancy line numbers, and we want every 5th line number to be fancy
6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);
6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // Set the style for the PRE around the code. The line numbers are contained within this box (not
6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // XHTML compliant btw, but if you are liberally minded about these things then you'll appreciate
6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // the reduced source output).
6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_overall_style('font: normal normal 90% monospace; color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', false);
6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // Set the style for line numbers. In order to get style for line numbers working, the <li> element
6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // is being styled. This means that the code on the line will also be styled, and most of the time
7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // you don't want this. So the set_code_style reverts styles for the line (by using a <div> on the line).
7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // So the source output looks like this:
7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    //
7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // <pre style="[set_overall_style styles]"><ol>
7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // <li style="[set_line_style styles]"><div style="[set_code_style styles]>...</div></li>
7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // ...
7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // </ol></pre>
7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_line_style('color: #003030;', 'font-weight: bold; color: #006060;', true);
7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_code_style('color: #000020;', true);
7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // Styles for hyperlinks in the code. GESHI_LINK for default styles, GESHI_HOVER for hover style etc...
8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // note that classes must be enabled for this to work.
8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // Use the header/footer functionality. This puts a div with content within the PRE element, so it is
8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // affected by the styles set by set_overall_style. So if the PRE has a border then the header/footer will
8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // appear inside it.
8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_header_content('<SPEED> <TIME> GeSHi &copy; 2004-2007, Nigel McNie, 2007-2008 Benny Baumann. View source of example.php for example of using GeSHi');
8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_header_content_style('font-family: sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;');
9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // You can use <TIME> and <VERSION> as placeholders
9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_footer_content('Parsed in <TIME> seconds at <SPEED>, using GeSHi <VERSION>');
9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $geshi->set_footer_content_style('font-family: sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;');
9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} else {
9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // make sure we don't preselect any language
9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $_POST['language'] = null;
9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber?>
9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<head>
10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    <title>GeSHi examples</title>
10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    <style type="text/css">
10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    <!--
10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    <?php
10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if (isset($_POST['submit'])) {
10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        // Output the stylesheet. Note it doesn't output the <style> tag
10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo $geshi->get_stylesheet(true);
11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ?>
11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    html {
11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        background-color: #f0f0f0;
11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    body {
11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        font-family: Verdana, Arial, sans-serif;
11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        margin: 10px;
11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        border: 2px solid #e0e0e0;
11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        background-color: #fcfcfc;
12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        padding: 5px;
12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    h2 {
12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        margin: .1em 0 .2em .5em;
12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        border-bottom: 1px solid #b0b0b0;
12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        color: #b0b0b0;
12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        font-weight: normal;
12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        font-size: 150%;
12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    h3 {
13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        margin: .1em 0 .2em .5em;
13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        color: #b0b0b0;
13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        font-weight: normal;
13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        font-size: 120%;
13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    #footer {
13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        text-align: center;
13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        font-size: 80%;
13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        color: #a9a9a9;
13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    #footer a {
14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        color: #9999ff;
14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    textarea {
14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        border: 1px solid #b0b0b0;
14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        font-size: 90%;
14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        color: #333;
14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        margin-left: 20px;
14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    select, input {
15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        margin-left: 20px;
15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    p {
15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        font-size: 90%;
15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        margin-left: .5em;
15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -->
15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    </style>
15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</head>
15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<body>
16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<h2>GeSHi Example Script</h2>
16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<p>To use this script, make sure that <strong>geshi.php</strong> is in the parent directory or in your
16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberinclude_path, and that the language files are in a subdirectory of GeSHi's directory called <strong>geshi/</strong>.</p>
16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<p>Enter your source and a language to highlight the source in and submit, or just choose a language to
16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberhave that language file highlighted in PHP.</p>
16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<?php
16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif (isset($_POST['submit'])) {
16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    // The fun part :)
16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo $geshi->parse_code();
16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo '<hr />';
17090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber?>
17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<form action="<?php echo basename($_SERVER['PHP_SELF']); ?>" method="post">
17390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<h3>Source to highlight</h3>
17490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<p>
17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<textarea rows="10" cols="60" name="source" id="source"><?php echo $fill_source ? htmlspecialchars($_POST['source']) : '' ?></textarea>
17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</p>
17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<h3>Choose a language</h3>
17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<p>
17990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<select name="language" id="language">
18090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<?php
18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif (!($dir = @opendir(dirname(__FILE__) . '/geshi'))) {
18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if (!($dir = @opendir(dirname(__FILE__) . '/../geshi'))) {
18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo '<option>No languages available!</option>';
18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$languages = array();
18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwhile ($file = readdir($dir)) {
18890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if ( $file[0] == '.' || strpos($file, '.', 1) === false) {
18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        continue;
19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $lang = substr($file, 0,  strpos($file, '.'));
19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $languages[] = $lang;
19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberclosedir($dir);
19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersort($languages);
19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberforeach ($languages as $lang) {
19790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if (isset($_POST['language']) && $_POST['language'] == $lang) {
19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        $selected = 'selected="selected"';
19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    } else {
20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        $selected = '';
20190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    }
20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo '<option value="' . $lang . '" '. $selected .'>' . $lang . "</option>\n";
20390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
20490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
20590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber?>
20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</select>
20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</p>
20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<p>
20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<input type="submit" name="submit" value="Highlight Source" />
21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<input type="submit" name="clear" onclick="document.getElementById('source').value='';document.getElementById('language').value='';return false" value="clear" />
21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</p>
21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</form>
21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<div id="footer">GeSHi &copy; Nigel McNie, 2004, released under the GNU GPL<br />
21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberFor a better demonstration, check out the <a href="http://qbnz.com/highlighter/demo.php">online demo</a>
21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</div>
21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</body>
21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber</html>
218