Avatar billede human Nybegynder
13. juli 2003 - 06:22 Der er 4 kommentarer og
1 løsning

Vis kode, ikke fortolk

Hejsa!

Jeg har kigget lidt i php's manual, og fundet frem til denne funktion:


function phpHighlight($input)
{
$text = spliti("\[php\]|\[\/php\]",$input);
for($i = 0; $i < count($text); $i++) {
  if(ereg("(<\?php)(.*)(\?>)",$text[$i])) {
    ob_start();
    highlight_string($text[$i]);
    $text[$i] = ob_get_contents();
    ob_end_clean();
  }
  else {
    $text[$i] = nl2br(htmlspecialchars($text[$i]));
  }
}
$text = implode("",$text);
return $text;
}

Lad os sige jeg har inkluderet det på en side hvor der skal være en artikel, og jeg så længere nede på siden skriver:

[php]
<?php
print "test";
?>
[/php]

Så burde den vel skrive:
<?php
print "test";
?>
Med farver, men istdet skriver den:
[php]test[/php]

Dvs. funktionen ikke bliver brugt til noget som helst, og den fortolker istdet.

Hvordan får jeg det lige til at virke efter hensigt?
Har på fornemmelsen det har noget med $input at gøre.

// Human
Avatar billede Slettet bruger
13. juli 2003 - 07:46 #1
Du kalder funktionen ik?

<?
$input = 'Bla bla bla <?php print "test"; ?> foo foo bar';
echo phpHighlight($input);
?>
Avatar billede Slettet bruger
13. juli 2003 - 07:47 #2
$input = 'Bla bla bla [php]<?php print "test"; ?>[/php] foo foo bar';
Avatar billede Slettet bruger
13. juli 2003 - 11:16 #3
Bruger selv følgende til at markere:

$text = preg_replace_callback(
              '/(<code>)((.|\n)*?)(<\/code>)/i',
create_function('$matches','ob_start();highlight_string($matches[2]);$con=ob_get_contents();ob_end_clean();return $con;'),$text);
        $text = preg_replace(array('/<code>/i','/<\/code>/i'),array('',''),$text);

Alt i mellem <code> og </code> får en omgang :)
Take it or leave it!

Du kan nogle eksempeler på http://www.reginscorner.dk/index.php/Scripts
Avatar billede human Nybegynder
13. juli 2003 - 22:39 #4
mercur8: SMid et smar.
Avatar billede Slettet bruger
14. juli 2003 - 02:32 #5
Ok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester