Gå til innhold

preg_replace og highlight_string


Anbefalte innlegg

Jeg driver med et lite prosjekt, og holder nå på med en bbcode-parser. Jeg holder på å lage noe til code-taggen. Inni denne vil jeg gjerne bruke highlight_string()-funksjonen, men det viser seg at det ikke er så lett i og med at jeg også har html inni preg_replace()-funksjonen.

 

Slik ser det ut:

// [code]-tag
$text = preg_replace("/\[code\](.+)\[\/code\]/U", "<div class=\"code\">highlight_string(\\1)</div>", $text);

 

Jeg vet at denne ikke fungerer, den gir:

 

highlight_string(Praesent justo. Donec vestibulum cursus felis. Mauris sed libero sed quam volutpat gravida. Sed tincidunt, nunc non fringilla semper, lacus eros molestie ipsum, ac fermentum nisl metus sit amet nulla. Nulla facilisi. Praesent vel massa eget felis faucibus egestas. )

 

Hvordan får jeg dette til å fungere skikkelig ?

Endret av sim
Lenke til kommentar
Videoannonse
Annonse

Linja der funksjonen brukes i nyheter.php

echo "<div class=\"artikkelinnhold\">" . artikkelbilde($line[bildeid]) . bbcode(nl2br($line[innhold])) . "</div>\n";

 

Denne ligger i funksjonen bbcode()

$text = preg_replace("/\[code\](.+?)\[\/code\]/isUe", "highlight('\\1',true)", $text);

 

Funksjonen highlight()

function highlight ($tekst,$format) {
     $tekst = stripslashes($tekst);
     $tekst = highlight_string($tekst);
     if ($format == true) {
               $tekst = "<div class=\"code\">$tekst</div>";
     }

       return $tekst;
}

 

I din funksjon hadde du

$tekst = highlight_string($tekst, true);

Denne får jeg Warning: Wrong parameter count for highlight_string()

 

Jeg er rimelig nybegynner på dette, så det er ikke alt jeg forstår meg på. Men det går greit å kalle en funskjon inni en annen funksjon ?

Lenke til kommentar

Kalling av andre funksjoner inni funksjoner går greit, spesielt siden highlight_string() er en funksjon som er innebygd i selve PHP-motoren.

 

Den siste parameteren, true, er der for at funksjonen bare skal returnere svaret som en streng og ikke bare printe det ut. Kjekt hvis du vil manipulere det litt videre.

 

Grunnen til at du får kun tallet 1 i retur, tror jeg er fordi highlight_string() krever at du starter og slutter strengen med <?php og ?>. Hvis ikke vil den ikke funke.

 

Er i samme slengen usikker på hvor godt / fungerer som avgrensning i preg_replace(). Prøv å bytt den ut med #, slik som i mitt eksempel.

Lenke til kommentar

Hei igjen

 

Jeg får det ikke til å fungere. Jeg tror jeg fant ut det angående return-parameteret.

 

Note:  The return parameter became available in PHP 4.2.0.

 

Boksen jeg jobber på har kun versjon 4.1.2.

Endret av sim
Lenke til kommentar
Sikker på at du har med <?php og ?> i strengen du setter highlight på? Kommer det opp noen feilmeldinger?

Jeg prøvde å sette inn "<?php ?>" inn i strengen. Strengen ble blå, men den ville ikke plassere seg der jeg ville ha den.

Kort sagt, det funka ikke.

 

Tror kanskje jeg bare gir opp dette akkurat nå, lar det ligge, og jobber videre med litt andre ting :).

 

Takk for hjelpa iallefall.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...