login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Code highlighting via preg_replace (Opgelost)

Offline tomie94 - 02/02/2008 12:56
Avatar van tomie94PHP interesse Hallo,

Ik ben bezig met mijn forum en nu zit ik met een probleem...
ik wil graag code tags hebben. nu zit ik vast want ik gebruik preg_replace en de code wil ik highlighting met de php functie highlight. nu is mijn vraag hoe kan ik de functie gebruiken via preg_replace

7 antwoorden

Gesponsorde links
Offline Koen - 02/02/2008 13:09
Avatar van Koen PHP expert
  1. $code = preg_replace("#\[php\](.*?)\[php\]#si", "\\1", $string);
  2. $code = highlight_string($code);

Zo?
Offline tomie94 - 02/02/2008 13:15 (laatste wijziging 03/02/2008 10:14)
Avatar van tomie94 PHP interesse nee... helaas... ik probeer het nu even zo:
  1. $text = preg_replace("#\[code=php\](.*?)\[/code\]#si", "".$geshi =& new GeSHi('\\1', 'php')."".$geshi->parse_code()."", $text);


maae dit werkt helaas ook niet...

[error]
Catchable fatal error: Object of class GeSHi could not be converted to string in C:\wamp\www\v2\class.inc.php on line 11
[/error]

edit:
dit werkt ook niet:
  1. include_once('geshi/geshi.php');
  2. function php_kleuren($phpcode) {
  3. $geshi =& new GeSHi($phpcode, 'php');
  4.  
  5. echo $geshi->parse_code();
  6.  
  7.  
  8.  
  9. }
  10. $text = preg_replace ("#\[php\](.*?)\[/php\]#si", ''.php_kleuren("\\1").'', $text);



2e edit:
dit werkt:
  1. <?php
  2. include_once('geshi/geshi.php');
  3. function php_kleuren($phpcode) {
  4. $geshi =& new GeSHi($phpcode, 'php');
  5.  
  6. echo $geshi->parse_code();
  7.  
  8.  
  9.  
  10. }
  11.  
  12. $php = preg_replace ("#\[php\](.*?)\[/php\]#si", ''"\\1".'', $text);
  13. $php = php_kleuren($php);
  14. $text = preg_replace ("#\[php\](.*?)\[/php\]#si", $php, $text);
  15. ?>

maar nu staat alle tekst in de code, en ik kan niet meerder keren een code toevoegen

Edit: Kleine verandering in code hierboven. maar hij werkt nogsteeds nuet...
Offline timmie_loots - 03/02/2008 17:26
Avatar van timmie_loots PHP gevorderde
  1. <?php
  2.  
  3. include_once "geshi/geshi.php";
  4.  
  5. $nieuwe_tekst = preg_replace_callback("/\[php\](.*?)\[\/php\]/si", create_function('$matches', "\$geshi = new GeSHi(\$matches[1], 'php'); return \$geshi->parse_code();", $originele_tekst);
  6.  
  7. ?>


Zoiets.
Offline tomie94 - 03/02/2008 17:34
Avatar van tomie94 PHP interesse dan krijg ik hellaas een error:
Warning: Wrong parameter count for create_function() in C:\wamp\www\v2\class.inc.php on line 18

Warning: Wrong parameter count for preg_replace_callback() in C:\wamp\www\v2\class.inc.php on line 18

code:
  1. $text = preg_replace_callback("/\[php\](.*?)\[\/php\]/si",
  2. create_function($matches, "
  3. \$geshi = new GeSHi(\$matches[1], 'php');echo \$geshi->parse_code();", $text));

Offline Bart - 03/02/2008 17:37
Avatar van Bart PHP expert Zoek nou eens zelf wat uit tomie94, dit begint me behoorlijk te irriteren aan jou. Je vraagt alles maar, je blijft aan de gang met vragen stellen, en weet je waarom? Omdat je niets leert doordat je alles vraagt.
Kijk op php.net naar deze functies; create_function , preg_replace_callback(). Daar laten ze zien hoe de functies werken en hoeveel parameters een functie minimaal nodig heeft. En natuurlijk Google, die jij nooit raadpleegd, of sorry, jij krijgt nooit resultaten bij Google he, helemaal vergeten.
Offline tomie94 - 03/02/2008 17:46
Avatar van tomie94 PHP interesse het is me gelukt:
  1. function ubb($text) {
  2.  
  3. function highlight( $matches )
  4. {
  5. $code = stripslashes( $matches[1] );
  6. $geshi =& new GeSHi($code, 'php');
  7. echo $geshi->parse_code();
  8.  
  9.  
  10. }
  11.  
  12. $text = preg_replace("#\[b\](.*?)\[/b\]#si", "<b>\\1</b>", $text);
  13. $text = preg_replace("#\[i\](.*?)\[/i\]#si", "<i>\\1</i>", $text);
  14. $text = preg_replace("#\[u\](.*?)\[/u\]#si", "<u>\\1</u>", $text);
  15.  
  16. $text = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si", "
  17. <font color='\\1'>\\2</font>", $text);
  18. $text = preg_replace("#\[small\](.*?)\[/small\]#si", "<small>\\1</small>", $text);
  19. $text = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si", "<a href='\\1'>\\2</a>", $text);
  20. $text = preg_replace("#\[url\](.*?)\[/url\]#si", "<a href='\\1'>\\1</a>", $text);
  21. $text = preg_replace_callback('!\[php\](.*)\[\/php\]!sUi', 'highlight', $text);
  22.  
  23.  
  24. $text = nl2br($text);
  25. echo $text;
  26. }
  27. ?>
Offline timmie_loots - 03/02/2008 17:54
Avatar van timmie_loots PHP gevorderde De reden dat 'mijn' scriptje niet werkte is omdat je het niet goed kopiëerde. Je hebt dingen weggehaald omdat je dacht dat het anders moet, maar gewoon kopieëren van het script moet gewoon lukken.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.287s