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 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   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 © 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 © 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