Anders Moen Skrevet 6. mai 2007 Del Skrevet 6. mai 2007 (endret) Som emnetittel sier: hvordan kan jeg bruke highlight_string hvis man har skrevet [*code]En kode[/code*]? bbKoden for kode som jeg har: $Text = preg_replace("(\[code\](.+?)\[/code\])is", '</span><div class="codebody"><div class="code">$1</div></div><span class="content">', $Text); Altså der det står $1..det er den teksten som skulle ha vært "fargelagt"..har prøvd wordpwap(highlight_string($str)); og highlight_string(wordwrap($str)); på hele outputen, men det ble bare tull...altså teksten ble rett og slett ødelagt hvis dere skjønner...uansett, det var ikke poenget Endret 6. mai 2007 av Anders-Moen Lenke til kommentar
Runar0 Skrevet 6. mai 2007 Del Skrevet 6. mai 2007 (endret) PHP <?php if(preg_match_all("/ (.+?) /is", $Text, $match)) { foreach($match[1] as $id => $code) { $Text = str_replace($match[0][$id], '</span><div class="codebody"><div class="code">' . hilight_string($code) . '</div></div><span class="content">', $Text); } } ?> Noe sånn. Utestet. Edit: Tabbet til legg til svar og trykte space før eg var ferdig Endret 6. mai 2007 av Shadows0 Lenke til kommentar
Anders Moen Skrevet 6. mai 2007 Forfatter Del Skrevet 6. mai 2007 (endret) Hmm... Åssen skal jeg liksom få denne inni her: $r = mysql_query("SELECT * FROM blog WHERE id = '$id'"); $row = mysql_fetch_assoc($r); echo '<span class="portfolio_title">' . htmlentities(stripslashes($row['title'])) . '</span>'; echo '<br />'; echo '<span class="content"><b>' . bbcode(nl2br(htmlentities(stripslashes($row['intro'])))) . '</b></span>'; echo '<br />'; echo '<br />'; echo '<span class="content">' . bbcode(nl2br(htmlentities(stripslashes($row['content'])))) . '</span>'; echo '<br />'; echo '<br />'; echo '<small>Published by <b>' . $row['pub_by'] . '</b> on ' . $row['date'] . '</small>'; echo '<br />'; echo '<br />'; include 'comments.php'; Og i tillegg så brukes [code*] flere ganger i løpet av en post...eks: http://andersmoen.com/blog/archive/4/ Endret 6. mai 2007 av Anders-Moen Lenke til kommentar
Runar0 Skrevet 6. mai 2007 Del Skrevet 6. mai 2007 Legg koden inn i bbcode funksjonen din. Som du ser blir preg_match_all brukt og dermed så skal den støtte flere ['code][/code] tags. Lenke til kommentar
Gjest Slettet+142 Skrevet 6. mai 2007 Del Skrevet 6. mai 2007 Preg_replace_callback() skal virke..? Lenke til kommentar
Runar0 Skrevet 6. mai 2007 Del Skrevet 6. mai 2007 Det gjør den nok, kan vere det er ein betre løysing.. Lenke til kommentar
Anders Moen Skrevet 6. mai 2007 Forfatter Del Skrevet 6. mai 2007 Hmm...det der fungerte veldig dårlig Shadows0 Det ble bare masse div'er nedover, med en bokstav i hver...måtte ta bort koden med en gang så jeg har den ikke så dere får sett akkurat nå. Har heller ikke FTP akkurat nå Lenke til kommentar
Runar0 Skrevet 6. mai 2007 Del Skrevet 6. mai 2007 (endret) Klikk for å se/fjerne innholdet nedenfor function sh_highlight_string($code) { $code = $code[1]; if(!preg_match("/<\?(php|).*\?>/i", $code)) { $code = "<?php\n$code\n?>"; } $code = highlight_string($code, true); $code = explode("<br />", $code); $i = 1; $highlighted = "<table class=\"code\">"; foreach($code as $lineno => $syntax) { if(trim(strip_tags($syntax)) == "") { continue; } $highlighted .= "<tr><td>$i</td><td>$syntax</td></tr>"; $i++; } $highlighted .= "</table>"; return $highlighted; } $text = ' Her har du litt tekst [*code] $test = "Ein tekst streng"; echo $test; // Printet ut \'Ein tekst streng\' [*/code] Her er og litt meir tekst [*code] for($i = 0;$i<5;$i++) echo $i; [*/code] '; echo preg_replace_callback("/\[code\](.+?)\[\/code\]/is", "sh_highlight_string", $text); Der har du funskjonen eg brukar på mi eiga side. Grunnen til at den første koden eg la til ikkje fungerte var at eg gløymde å escape [ og ] Endret 6. mai 2007 av Shadows0 Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå