Suchen
Inside Forum
Nützliche Links
PHP Jobs
phpforum.de Tipp
 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 
PHP Test


werbung



Zurück   PHP Forum: phpforum.de > PHP > PHP

PHP Alles rund um PHP

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 19.09.2006, 17:38
Fredmonster Fredmonster ist offline
Neuer Besucher
 
Registriert seit: 11.07.2006
Beiträge: 16
Standard

Hallo.. Ich will einen bb-Code mit highlight-Funktion machen.. Habe auch schon so einiges ausprobiert, aber nichts will klappen..
könnt ihr mir helfen? Hier der Code:
PHP Quellcode:
$bb = preg_replace("!\[php\](.*)\[/php\]!isU","highlight_string($1)",$bb);
Gruß, Fredmonster!
Mit Zitat antworten
  #2  
Alt 19.09.2006, 17:45
alexander alexander ist offline
Vorbildlicher Helfer
 
Registriert seit: 04.02.2004
Beiträge: 4.791
Standard

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)
__________________
"Es gab eine Zeit, als Zeitungen sagten, nur zwölf Menschen verständen die Relativitätstheorie. Ich glaube nicht, dass es jemals eine solche Zeit gab. Auf der anderen Seite denke ich, es ist sicher zu sagen, niemand versteht Quantenmechanik." - R. Feynman
Mit Zitat antworten
  #3  
Alt 19.09.2006, 17:53
Fredmonster Fredmonster ist offline
Neuer Besucher
 
Registriert seit: 11.07.2006
Beiträge: 16
Standard

sorry, aber verstehe es immer noch nicht.. müsste der Code dann so lauten?
PHP Quellcode:
<?php $bb = preg_replace("!\[php\](.*)\[/php\]!isU/e","highlight_string($1)",$bb);
?>
Gruß, Fredmonster!
Mit Zitat antworten
  #4  
Alt 19.09.2006, 18:06
Rana Rana ist offline
Engagierter Besucher
 
Registriert seit: 22.12.2004
Beiträge: 6.441
Standard

Autsch!
Mit Zitat antworten
  #5  
Alt 19.09.2006, 18:37
combie combie ist gerade online
Forum-Mitarbeiter
 
Registriert seit: 29.07.2005
Beiträge: 33.261
Standard

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/proje...ode/index.html
Hier wird ua. bschrieben, warum reguläre Ausdrüche nicht unbedingt das
Optimum für BBCode interpreter sind...
__________________
 

Bitte immer nur im Schritttempo denken.
Wer in die falsche Richtung läuft, braucht sich nicht zu beeilen...
Mit Zitat antworten
  #6  
Alt 19.09.2006, 18:39
alexander alexander ist offline
Vorbildlicher Helfer
 
Registriert seit: 04.02.2004
Beiträge: 4.791
Standard

1. das muster ist falsch

nicht gut, aber auf der richtigen fährte:
PHP Quellcode:
$pattern = "!\[php\](.*)\[/php\]!ismUe";
2. der zweite parameter in preg_replace ist falsch

auch nicht toll, aber klappt im rahmen der möglichkeiten
PHP Quellcode:
"highlight_string('<?php \\1 ?>')"
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
PHP Quellcode:
<?php
$text = '
bla fasel
[php]echo "Hallo Welt!";
$antwort = 42;
?>
blub blub
';

echo preg_replace("!\[php\](.*)\[/php\]!ismUe","highlight_string('<?php \\1 ?>')", $text);
[/php] 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).
__________________
"Es gab eine Zeit, als Zeitungen sagten, nur zwölf Menschen verständen die Relativitätstheorie. Ich glaube nicht, dass es jemals eine solche Zeit gab. Auf der anderen Seite denke ich, es ist sicher zu sagen, niemand versteht Quantenmechanik." - R. Feynman
Mit Zitat antworten
  #7  
Alt 19.09.2006, 18:45
baztard baztard ist offline
Forum-Mitarbeiter
 
Registriert seit: 13.01.2003
Ort: Kiel
Beiträge: 1.571
baztard eine Nachricht über ICQ schicken
Standard

http://aidanlister.com/repos/v/PHP_Highlight.php
__________________

>>> simsIt.de - Jeden Tag 5000 kostenlose SMS für ALLE! Kein Abo, keine Kosten, keine Abzocke!

Keine Hilfe bei PHP-Problemen per PN, eMail, ICQ oder Telefon... Dass meine ICQ-Nummer in meinem Profil steht heisst nicht dass Ich mir jedermanns PHP-Problem ansehe
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
pdt - syntax highlight problemhaft kb Editoren & Entwicklungsumgebungen 2 30.05.2007 16:43
PHP Highlight Scripta EaStErDoM Skriptsuche 9 21.08.2006 15:45
highlight-funktion Fabian90 PHP 3 15.02.2006 06:40
Highlight Frage ;) Martin-Koschi HTML 4 22.01.2005 23:50
gdlib highlight funktion? captain PHP 2 21.10.2004 15:14


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 Uhr.


Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC