Avatar billede MikkelHanson Nybegynder
07. september 2009 - 12:26 Der er 1 løsning

Post tekst før og efter preg_match

Hej Eksperter.

Jeg ved ikke hvordan jeg skal forklare mig, så her kommer et billede af hvordan koden indtil videre ser ud.

http://imageload.dk/files/2cc2e00ea94a61651a0c894165996bbb.png

Herefter min kode, hvor jeg benytter preg_match for at matche alt mellem [kode] og [/kode].

<?php
function phpkode($php){

    if(preg_match("@\[kode\](.*?)\[/kode\]@is", $php, $php)){

    $php = stripslashes(highlight_string($php[1], true));   
   
        $php = explode ('<br />', $php);
        $start = '<div class="tal">';
        $slut = '</div>';
        $i = 1;

        foreach ($php as $tal) {
            $tekst .= $start . $i . ' ' . $slut . str_replace("<br />", '', $tal) . "<br />";
            $i++;
        }
    }
    echo $tekst;
}
?>

Herefter poster jeg den ønskede tekst streng, hvori der bla. ligger de førnævnte tags [kode] og [/kode].

<?php

$hej = "Hej med jer eksperter.
Hvordan gaar det med jer inde bag skaermen?
Her gaar det godt, men disse linier kommer ikke med.

[kode]<?php
session_start(); // Starter Sessionen
if (session_is_registered('brugernavn') AND ('kodeord')) {  // Tjekker om man er logget ind
include('top.php');
      $ hent = mysql_query('SELECT * FROM butik_figur ORDER BY id DESC') or die(mysql_error());
      while($vis = mysql_fetch_array($hent)) {

if($aendre == profil) { ?>

<?php echo 'form'; ?>
<form action='?show=profil&id=$login&aendre=profil' method='post'>
<input type='text' value='$p[koen]' /><br />
<input type='submit' value='Submit' />
</form>
<? }  ?>[/kode]

Og hernede kommer almen tekst heller ikke med, hvordan loeser jeg dette?";

phpkode($hej);

?>

Problemet er så, at teksten før og efter mine tags [kode][/kode] ikke bliver vist som almen tekst.

Min kode virker ganske fint, hvis blot man kun har de tags i teksten - men ikke hvis man skriver en ordentlig smøre af tekst og vedlægger lidt kode.

Har læst mig til, at preg_match_all skulle kunne klare sagerne, men uanset hvordan jeg drejer og vender det så kan jeg bare ikke få det til at virke.

Håber derfor nogle af jer derude, kan guide mig frem til den rigtige løsning.

Med venlig hilsen

Mikkel Hanson
Avatar billede MikkelHanson Nybegynder
09. september 2009 - 00:17 #1
Jeg fandt løsningen ved at benytte:

preg_replace_callback

JEG ER GUD :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester