login  Naam:   Wachtwoord: 
Registreer je!
 Forum

ubb script probleem

Offline Nation - 15/08/2006 16:55 (laatste wijziging 15/08/2006 16:56)
Avatar van NationPHP interesse bij dit script
ik wil dus, ook nog toevoegen: [code] de code [/code/]
(extra slash omdat ik anders hier ook in code typ )
je weet wel 
maar, dit lukt mij niet met highlight_string();
omdat ik nl2br() toepas kan ik highlight niet gebruiken omdat de tekens van <?php bijvoorbeeld al zijn omgezet 
hoe los ik dit op ?

9 antwoorden

Gesponsorde links
Offline Thomas - 15/08/2006 16:59
Avatar van Thomas Moderator code-blokken en UBB apart verwerken. Dus niet eerst een ubb-functie over alle content heengooien en dan code-blokken maken, maar eerst de code-blokken er uit knippen, dan de UBB over de rest van je inhoud, en dan de code-blokken weer terugzetten en hier de code-blok-maak-functie overheen gooien.

Althans, zo werkt het op SM, je kunt natuurlijk je eigen stack-based parser schrijven...

Zoek anders eens op het forum, deze vraag is in het verleden al tig keer de revue gepasseerd.
Offline CDNC - 15/08/2006 16:59
Avatar van CDNC PHP ver gevorderde op het einde van de functie pas door de nl2br() halen?
Offline Nation - 15/08/2006 17:02 (laatste wijziging 15/08/2006 17:52)
Avatar van Nation PHP interesse heb dat van CDNC al geprobeerd, dat haalt dus niks uit,
van FangorN dan maar proberen als ik eens genoeg tijd heb 
maar FangorN , als ik bijvoorbeeld doe:
  1. $code = verwerk_code($bericht);
  2. $rest= verwerk_rest($bericht);
  3. echo $code.$rest;

waarbij deze dan gemaakte functies zijn 
dan staat het bericht niet meer in juiste volgorde wel?


Offline CDNC - 15/08/2006 17:58 (laatste wijziging 15/08/2006 18:03)
Avatar van CDNC PHP ver gevorderde exploden bij [.code.] en dan achter af weer juist aan een mixen?
  1. <?
  2. $input = '
  3. dit is bagger
  4. [.code.]
  5. $d = '$e';
  6. [/code.]
  7. dat was het
  8. ';
  9.  
  10. if(ereg("[.code.]", $input))
  11. {
  12. $expl = explode("[.code.]", $input);
  13. $exple = explode("[/.code.]", $expl[1]);
  14.  
  15. // $exple[0] in nu het code gedeelte
  16. }
  17.  
  18. // weer juist aan een plakken:
  19. $output = set_ubb($expl[0]) . verwerk_code($exple[0]) . set_ubb($exple[1]);
  20.  
  21. ?>
Offline Thomas - 16/08/2006 10:29 (laatste wijziging 16/08/2006 10:33)
Avatar van Thomas Moderator Als je het volgende bericht hebt (met {code}{/code} voor de code-blokken):

  1. Dit is tekst lalala
  2. {code}
  3. <?php
  4. echo "dit is code";
  5. ?>
  6. {/code}
  7. Dit is weer tekst.
  8. {code}
  9. weer code
  10. {/code}


Dan "red" je eerst de codeblokken met een regexp - De code zet je in een tijdelijk array. Op de plaats van {code}{/code} zet je de index van het code-blok:

  1. Dit is tekst lalala
  2. {code}0{/code}
  3. Dit is weer tekst.
  4. {code}1{/code}


Over dit bericht gooi je je UBB-code, met de {code}{/code} blokken gebeurt niets.

Vervolgens zet je de code-blokken weer terug op de goede plaats (m.b.v. index en regexp), met de daarbij behorende code-opmaak (regelnummers, highlighting et cetera).
Offline Nation - 16/08/2006 13:48
Avatar van Nation PHP interesse heb dat van CDNC geprobeerd, maar dan krijg ik het niet in juiste volgorde dan krijg ik als output:

  1. $d = '$e';
  2. dit is bagger
  3. dat was het
Offline Thomas - 16/08/2006 14:39
Avatar van Thomas Moderator Je moet de positie van je code-blokken onthouden (markeren), omdat deze op voorhand niet vaststaan.

Zie mijn aanpak.
Offline Nation - 16/08/2006 16:41 (laatste wijziging 16/08/2006 18:25)
Avatar van Nation PHP interesse dit werkt:
  1. <?php
  2. if(ereg("[.code.]", $string)){
  3. $text = explode("[.code.]", $string);
  4. $code = explode("[./code.]", $text[1]);
  5. echo replace($text[0])."<table width='500' style='border:1px solid #000000;'><tr><td>";
  6. highlight_string($code[0]);
  7. echo "</td></tr></table>".replace($code[1]);
  8. // $code[0] in nu het code gedeelte
  9. }
  10. ?>

(replace() is de ubb functie)
maar alleen, dit gaat maar meerdere code blokken zijn niet mogelijk iemand een oplossing.
die van fangorn zal wel werken,
maar ik kan niet met indexen werken
en hoe kan je regels tellen ? =)
Offline Thomas - 17/08/2006 10:15 (laatste wijziging 17/08/2006 10:15)
Avatar van Thomas Moderator
Citaat:
maar ik kan niet met indexen werken
?
Citaat:
en hoe kan je regels tellen
Je codefragment exploden op "\n". De grootte van het resulterende array = het aantal regels.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.252s