Gå til innhold

preg_replace og highlight_string


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet

Jeg brukte koden i den andre tråden, men det eneste som vises inni div-en er ett 1-tall, teksten som er highlighted vises utenfor div-en.

Skrevet

Kan du vise hvordan du brukte funksjonen? Evt. litt kode, både før og etter?

 

Funker forresten helt fett der jeg bruker den funksjonen.

Skrevet

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 ?

Skrevet

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.

Skrevet (endret)

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
Skrevet
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.

Skrevet
Oki. Bra at det funket til slutt.

Kjipt når ting ikke funker pga. versjonsfeil og ikke kodefeil. Kodefeil er iallefall enklere å oppdage.

 

Takk for hjelpa :)

Skrevet

Jupps. Holdt på å mekke litt på en filadministreringsgreie, men oppdaget etter en stund at en funksjon jeg slet litt med ikke kom før PHP5.

 

Bare hyggelig, forresten. :)

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å
×
×
  • Opprett ny...