• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP-Highlighting in Preg_replace

Status
Für weitere Antworten geschlossen.
PHP:
<?php

function bbcode($str) {
	/* Smileys */
         $str = str_replace(":)","<img src='./smileys/happy.gif' alt='' border='0'>",$str);
         $str = str_replace(":(","<img src='./smileys/sad.gif' alt='' border='0'>",$str);
         $str = str_replace("o0","<img src='./smileys/rolleyes.gif' alt='' border='0'>",$str);

         /* Fett, Unterstrichen, Kursiv */
         $str = preg_replace("!\[i\](.*)\[/i\]!","<i>$1</i>",$str);
         $str = preg_replace("!\[b\](.*)\[/b\]!","<b>$1</b>",$str);
         $str = preg_replace("!\[u\](.*)\[/u\]!","<u>$1</u>",$str);

         /* Links und Bilder */
         $str = preg_replace("!\[url\](.*)\[/url\]!","<a href='$1' title='$1'>$1</a>",$str);
         $str = preg_replace("!\[url=(.*)\](.*)\[/url\]!","<a href='$1' title='$2'>$2</a>",$str);

         /* Linkziel _blank */
         $str = preg_replace("!\[new\](.*)\[/new\]!","<a href='$1' title='$1'>$1</a>",$str);
         $str = preg_replace("!\[new=(.*)\](.*)\[/new\]!","<a href='$1' title='$2'>$2</a>",$str);

         /* Zeilenumbrüche */
         $str = nl2br($str);

         /* Code */
         $str = preg_replace("!\[php\](.*)\[/php\]!","highlight_string('$1');",$str);

         return ($str);
         }

?>

Das ist mein BBCode im Moment. Wenn ich aber jetzt [noparse]
PHP:
<?php echo "Test"; //Comment ?>
[/noparse] auf meiner Page eingebe, kommt nur
highlight_string('')
raus. Demo: http://www.lofw.de/?site=tut_datenbank
 
Tja, aber ich möchte gerne ne Community aufbauen, in der man halt BBCode brauchtm deswegen mach ich es nich direkt... Ich hatte diese Topic schonma, aber das wurde gelöscht, also kann ich da net mehr nachschaun.
 
Jo das hab ich letztes mal schon die lösung gepostet. Man es so:
PHP:
$bb = preg_replace("!\[php\](.*)\[/php\]!isU","
highlight_string($1, TRUE)
",$bb);
 
Habe ich auch schon versucht, aber dann funktioniert es gar nicht dann wird gar nichts angezeigt. Leider hat mein Server kein error_reporting, auch wenn ich das angebe.
 
du musst bei preg_replace den modifikator e benutzen, dann kannst du die funktion benutzen

weiss aber net mehr ob so
PHP:
$bb = preg_replace("!\[php\](.*)\[/php\]!isUe","highlight_string(\\1)",$bb);
oder so
PHP:
$bb = preg_replace("!\[php\](.*)\[/php\]!isUe",highlight_string("\\1"),$bb);
:oops:
 
Ausgabe bei Version 1:

Parse error: parse error, unexpected '<', expecting ')' in C:\xampp\htdocs\bbcode.php(26) : regexp code on line 1

Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: highlight_string(&lt;?php echo \&quot;test\&quot;; //COMMENT ?&gt;) in C:\xampp\htdocs\bbcode.php on line 26

Ausgabe bei Version 2:


EDIT: Habs geschafft:

PHP:
$str = preg_replace("!\[php\](.*)\[/php\]!isUe","highlight_string('\\1', TRUE)",$str);
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben