login  Naam:   Wachtwoord: 
Registreer je!
 Forum

highlight_string: geen highlights

Offline Rens - 04/04/2005 13:39 (laatste wijziging 04/04/2005 13:41)
Avatar van RensGouden medaille

Crew algemeen
Ik ben bezig met een forum te maken.
Daar wil ik dan ook code tags voor hebben, zodat de gebruiker net als hier code in een veld kan zetten dat gehighlight word.
Ik heb een regex gevonden, die werkt gewoon.
Maar de highlight_string() geeft geen highlight kleuren.
Het blijft allemaal zwart:(
Ik heb al van alles geprobeerd, maar het lukt niet.
Als ik er gewoon een stukje code als <?PHP echo "blaat"; ?> in zet, werkt het wel, maar als ik de \\1 gebruik, waarin dan de code van het bericht staat, werkt het niet:s
Ik gebruik de volgende code:

  1. <?PHP
  2. function ubb($sText)
  3. {
  4. $this->ubbText = $sText;
  5. $this->ubbText = str_replace("<", "&lt;", $this->ubbText);
  6. $this->ubbText = str_replace(">", "&gt;", $this->ubbText);
  7. $this->ubbText = nl2br($this->ubbText);
  8. $this->ubbText = preg_replace("/\[code\](.+?)\[\/code\]/is", highlight_string("\\1", TRUE), $this->ubbText);
  9. return $this->ubbText;
  10. }
  11. ?>


Dus nogmaals, hij weergeeft geen kleuren, de text van de code blijft helemaal zwart:'(

7 antwoorden

Gesponsorde links
Offline Dark_force - 04/04/2005 13:45 (laatste wijziging 04/04/2005 13:46)
Avatar van Dark_force Nieuw lid Probeer eens zo:

  1. <?php
  2. $this->ubbText= preg_replace("_\[code\]([0-9])\[/code\]_ise", "highlight_string('\\1')", $this->ubbText);
  3. ?>
Offline Thomas - 04/04/2005 13:46 (laatste wijziging 04/04/2005 14:03)
Avatar van Thomas Moderator De code die je wilt highlighten MOET tussen <?php ?> (of <? ?>) tags staan - misschien dat het daar aan ligt ?

Vergelijk:

  1. echo "Geen kleur :(";


  1. <?php
  2. echo "Wèl kleur !!!";
  3. ?>
  4. Geen kleur :(
  5. <?
  6. echo "Wèl kleur !!!";
  7. ?>
Offline Rens - 04/04/2005 13:50
Avatar van Rens Gouden medaille

Crew algemeen
@Dark_force: Nu werkt het helemaal niet meer:p
Nu staan de code tags er gewoon om heen:s
Even je [0-9] veranderd (er komen immers niet alleen getallen in:p).
Maar dan krijg ik een hoop fouten, komt door de e achter _ise.

@FangorN: Jah, daar heb ik aan gedacht:D
In de database heb ik het volgende staan om het te testen:
<?PHP
echo "Blaat";
?>
Dus het ligt niet aan de PHP tags.
Offline Thomas - 04/04/2005 14:36
Avatar van Thomas Moderator Ah...

Je vervangt < van tevoren al door &lt;

Je ziet dus welliswaar "<" maar er staat al "&lt;" in de code.

Als je hier nog eens highlight_string() overheen gooit, maakt ie hier zelfs &amp;lt; van denk ik.

Dat is het probleem dat je meestal hebt met "gewone tekst" en "codeblokken" - ze vereisen allebei een aparte behandeling. In "gewone tekst" wil je alle < en > karakters er graag uit hebben, maar in code-blokken mogen deze karakters juist (nog) niet veranderd worden omdat highlight_string() ze anders niet goed verwerkt.
Offline Rens - 04/04/2005 15:18
Avatar van Rens Gouden medaille

Crew algemeen
Dus ik zou eerst de highlight_string() moeten doen, en daarna pas de < ==> &lt; en < ==> &gt; moeten doen?
Offline Fenrir - 04/04/2005 16:00
Avatar van Fenrir PHP expert Nee, want dat kan ook niet, want highlight_string heeft html-tags nodig, dus dan zie je de code die highlight_string oplevert ipv de kleuren.

Je kunt denk ik beter een stack-parser maken, of eerst alle codeblokken opslaan in een array, en vervangen door oid, en ze terugzetten nadat je alle < & > vervangen hebt.
Offline Rens - 04/04/2005 16:02
Avatar van Rens Gouden medaille

Crew algemeen
Hmm, ok.
Zal eens naar enkele voorbeelden zoeken en het gaan proberen.
Bedankt voor alle hulp.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.224s