Antworten
wie kommst du denn darauf, dass reg_replace irgendetwas anderes tun sollte, als vor den gematchten text hightlight_string( zu schreiben?
wenn du schon möchtest, dass etwas evaluiert wird, dann musst du auch den passenden modifier setzen, in diesem falle also das "e":
http://de.php.net/preg_replace (beispiel 4)
2.
sorry, aber verstehe es immer noch nicht.. müsste der Code dann so lauten?
Code: In Zwischenablage kopieren (nur IE)
Gruß, Fredmonster!
3.
Autsch!
4.
Also, ich möchte mal Bedenken äußern:
preg_replace mit dem modifier e birgt Gefahren!!
Eingesetzt in einem Forum oä. können Besucher eigenen Code zur Ausführung bringen!
Alternativ:
http://qbnz.com/highlighter/
Hat auch den Vorteil, daß es einen ganzen Berg von Sprachen abdeckt..
http://www.christian-seiler.de/projekte/php/bbcode/index.html
Hier wird ua. bschrieben, warum reguläre Ausdrüche nicht unbedingt das
Optimum für BBCode interpreter sind...
5.
1. das muster ist falsch
nicht gut, aber auf der richtigen fährte:
Code: In Zwischenablage kopieren (nur IE)
2. der zweite parameter in preg_replace ist falsch
auch nicht toll, aber klappt im rahmen der möglichkeiten
Code: In Zwischenablage kopieren (nur IE)
3. mit highlight_string wirst du nicht glücklich werden
weil die funktion keinen rückgabewert hat, sondern den übergebenen string direkt ausgibt. d.h., erst wird der formatierte text angezeigt, und erst dann der bearbeitete text. schau es dir am besten an einem beispiel an
Code: In Zwischenablage kopieren (nur IE)
blub blub
';
echo preg_replace("!\[php\](.*)\[/php\]!ismUe","highlight_string('<?php \\1 ?>')", $text);
[/CODE] du solltest besser preg_replace_callback verwenden und dir dort eine möglichkeit überlegen, den text zu highlighten (dazu gibt es irgendwo schon eine fertige klasse => google).
6.
http://aidanlister.com/repos/v/PHP_Highlight.php