PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : B Code Klasse Fragen?!


Funjoy
19.01.2005, 16:58:24
Hallo,

Ich arbeite gerade an einer BB Code Klasse. Ich wollte da mal paar fragen stellen weill ich dafür keine antwort habe.

1. Welche methode ist besser bzw. schneller beim parsen. wenn ich für jeden BBCode eine extra preg_replace() funktion nutze oder wenn ich alles in ein Array mache und nur eine preg_replace() funktion nutze!?

2. Ich habe schon ein HTML syntaxhighlighter programmiert nur habe ich das Problem das er bei ca. 100 Codezeilen sehr lange beim parsen brauch ist das normal?


3. Warum wird die funktion preg_replace_callback() so gut wie vermieden gibs da nachteile gegenüber preg_replace()?

So ansonsten war das schon alles hoffe mir kann jemand helfen :)

MfG Funjoy

feuervogel
19.01.2005, 17:55:38
1. alles in ein array packen und dann ein mal die regex-maschine anschmeißen ist sicher schneller.

2. wtf?

> $string = preg_replace("!&lt;/tbody&gt;!siU","<font color="#009999">&lt;/tbody&gt;</font>",$string);

du ersetzt <body> mit <font .... /font> wieso machst du das mit regex? regex _sind_ lahm und wos nur geht zu umgehen. probiers lieber mit str_replace...

Funjoy
19.01.2005, 18:10:41
Hallo,

Danke für dein Post jetzt bin ich schonmal etwas schlauer :-)

könntest du eventuel auch drttens beantworten? Gibs den noch eine andere Möglichkeit als preg_replace_callback() wenn ich für den Replacement eine Funktion nutzen möchte?

ps: was meinst du mit wtf???

MfG Funjoy

Funjoy
22.01.2005, 00:20:49
Hallo,

Ich habe die Klasse nun schon zu 90 % Fertig danke eurer Hilfe wer will kann sich ja mal die Ausgabe unter http://www.phpline.de/sample/ubb/
anschauen :-)

MfG Funjoy

feuervogel
22.01.2005, 08:32:31
wtf = what the f*ck

okay, ich lese mir nur für dich die man-page zu preg_replace_callback durch und sage:

wenn der unterschied zu preg_replace ist, dass nur ein callback geliefert wird, sag du uns, warum du sie verwendest!

Funjoy
22.01.2005, 11:13:10
Ich verwende den callback nur weill ich nicht wusste das man mit preg_replace und dem Flag e das gleiche erzielen kann ;)

und die abkürzung wtf habe ich bei c4 HP auch rausbekommen ^^

MfG Funjoy

feuervogel
22.01.2005, 13:31:37
und für was brauchst du den callback nun genau?

Funjoy
22.01.2005, 13:41:39
nun brauch ich kein Callback mehr da ich ja nun weiß wie ich es mit preg_replace auch machen kann davor habe ich z.B. Callback zur überprüfung von einen Wert genutzt Beispiel [ size=50 ]Text... [/size ]
da habe ich dann mittels einer Funktion überprüfen lassen ob der Wert nicht den Maximalwert übersteigt!

MfG Funjoy

feuervogel
22.01.2005, 14:10:27
achso, e, ja, ich erinner mich...der vollständigkeitshalber: 'e' steht für execute, damit wird der ersatz als ausdruck betrachtet.

Funjoy
23.01.2005, 14:09:11
Hallo,

Also laut Fehlermeldung würde ich sagen das e steht für evaluating :)

Fatal error: Failed evaluating code: $this->FontSize11,'Größe unter 55pt') in C:apachefriendsxampphtdocswww.phpline.declassUbbDecoder.php on line 617

MfG Funjoy

xabbuh
23.01.2005, 14:34:16
Wie sehen denn die entsprechenden Zeilen jetzt aus?

Funjoy
23.01.2005, 14:46:27
Hehe nein den Fehler habe ich nur Provoziert um damit zu sagen das der Flag e für evaluating stehen könnte ^^

MfG Funjoy

xabbuh
23.01.2005, 14:53:23
Original geschrieben von Funjoy
Hehe nein den Fehler habe ich nur Provoziert um damit zu sagen das der Flag e für evaluating stehen könnte ^^

MfG Funjoy
Sag das doch dazu... ;-)

feuervogel
23.01.2005, 15:37:16
na gut, habs hier nur auf deutsch...

meikel
24.01.2005, 14:49:52
Original geschrieben von feuervogel
achso, e, ja, ich erinner mich...der vollständigkeitshalber: 'e' steht für execute, damit wird der ersatz als ausdruck betrachtet.
Ich erlaube mir da anzumerken, daß e und eval() böse sind, wenn ungeprüfte Userstrings durch den Parser geschickt werden. Die vorhandenen Hintertürchen sollten eher abgedichtet als neue eingebaut werden.

Der letzte bekannt gewordene phpBB Bug basierte ua. darauf, daß Userdaten ungeprüft zum Parser geschickt wurden.