Yankes Skrevet 18. desember 2007 Del Skrevet 18. desember 2007 <?php $side = $_GET['side']; function PHP_kode($fil) { $fil = file($fil); echo("<div>"); foreach ($fil as $linje => $resultat) { echo("<code>" . ($linje + 1) . " "); highlight_string($resultat); echo("</code>"); } echo("</div>"); } PHP_kode($side); ?> Resultatet blir at alle linjene i PHP fila blir skrevet med linjenummer og alt, men kun den øverste linja (linje nummer 1) blir farget med highlight_string() Lenke til kommentar
Martin A. Skrevet 18. desember 2007 Del Skrevet 18. desember 2007 (endret) <?php $side = $_GET['side']; function print_php_code($str, $type) { switch ($type) { case "text": $str = highlight_string($str, true); break; case "file": $str = highlight_file($str, true); break; } $str = explode("<br />", $str); echo "<div>"; echo "<ol>\n"; foreach ($str as $line => $syntax) { if( trim( $syntax ) == "" ) { echo "<li></li>"; continue; } echo "<li><code>" . $syntax . "</code></li>"; } echo "</ol>\n"; echo "</div>"; } print_php_code( $side, 'file' ); ?> Bruker å stå mye interesant i kommentarene i manuelen Edit: Forbedret den litt Endret 18. desember 2007 av M4rTiN Lenke til kommentar
Yankes Skrevet 18. desember 2007 Forfatter Del Skrevet 18. desember 2007 Bruker å stå mye interesant i kommentarene i manuelen Ja, er jo akkurat det scriptet der jeg har brukt, men fikk det ikke til å funke, hverken sånn det var eller med mine PHP skillz men skal prøve din versjon Lenke til kommentar
Yankes Skrevet 19. desember 2007 Forfatter Del Skrevet 19. desember 2007 (endret) funka fint det, men.. Scriptet ser nå sånn ut: <?php $side = $_GET['side']; function print_php_code($str, $type) { switch ($type) { case "text": $str = highlight_string($str, true); break; case "file": $str = highlight_file($str, true); break; } $str = explode("<br />", $str); $i = 1; echo "<div>"; foreach ($str as $line => $syntax) { echo "<code><font color=black>" . ($line + 1) . "</font></code>"; echo "<code>" . $syntax . "</code>"; } echo "</div>"; } print_php_code( $side, 'file' ); ?> Problemet er at nå blir alt skrevet på ei linje, men linje nummreringa funker. Blir sånn: 1 <?php 2 3 // setter opp funksjonen o.s.v. Men hvis jeg setter på <br> i echo'n min så blir det linjeskifte, men da fucker den <code> greia seg og skriver ut koden med Times New Roman elns!? Endret 19. desember 2007 av YaNkEs Lenke til kommentar
kakkle Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Dette scriptet avhenger jo av at du har <br /> ved slutten av hver linje, da.. det er jo slett ikke sikkert du har, da... Prøv denne istedet: $str = explode("\n", $str); Evt bruk nl2br på $str, kanskje ? Lenke til kommentar
Yankes Skrevet 19. desember 2007 Forfatter Del Skrevet 19. desember 2007 Prøvde begge delene, ingen av dem funka (sånn jeg gjorde det hvertfall) Lenke til kommentar
Martin A. Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Hvorfor kan du ikke bare bruke det jeg la ut? Det gjør akkurat det du ønsker. Alle linjene med fargesyntax, og linjenummer. Lenke til kommentar
Yankes Skrevet 19. desember 2007 Forfatter Del Skrevet 19. desember 2007 (endret) Hvorfor kan du ikke bare bruke det jeg la ut? Det gjør akkurat det du ønsker. Alle linjene med fargesyntax, og linjenummer. Sant det, men den <code> greia blir fucka og det blir skrevet ut med feil font! Times New Roman elns!? EDIT: pluss at linjenummerene stemmer ikke helt heller.. Endret 19. desember 2007 av YaNkEs Lenke til kommentar
Runar0 Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Er da ingen problem å endre standar fonten i <code> ved hjelp av css, eventuelt bare ta vekk <code> i fra koden? Lenke til kommentar
grimjoey Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 (endret) edit: <?php $side = $_GET['side']; ob_start(); $hmm = highlight_file($side, true); echo $hmm; $ob = ob_get_contents(); ob_end_clean(); $a = explode("<br />", $ob); $f = ''; $nbsp = ' '; $j = 0; $count = count($a); $spa = ''; while($count > 1) { $count = $count / 10; $j++; $spa .= $nbsp; } $j = 10*pow(10, $j); foreach($a as $nummer => $tekst) { $num = $nummer+$j+1; $num = substr($num, 1); if(!(int)$num) $num = substr($spa, 6).'<font color="#000000">1'; else { $i = 0; $sp = ''; while(!(string)$num{$i}) { $i++; $sp .= $nbsp; } $num = substr($num, $i); $num = substr($sp, 0, -6).$num; } $f .= '<code><font color="#000000">'.$num.'</font></code> '.$tekst.'<br />'; } echo $f; ?> Endret 25. desember 2007 av grimjoey Lenke til kommentar
Yankes Skrevet 25. desember 2007 Forfatter Del Skrevet 25. desember 2007 Funka fint det grimjoey, men første linje skal starte på 1 og ikke 0 som i ditt script! Lenke til kommentar
grimjoey Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 (endret) nå har jeg endret scriptet ovenfor til å vise 1 som første linje. Endret 25. desember 2007 av grimjoey 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å