Gå til innhold

highlight_string() funker kun på første linje


Anbefalte innlegg

Skrevet

<?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()

Videoannonse
Annonse
Skrevet (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 av M4rTiN
Skrevet
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 :p men skal prøve din versjon :)

Skrevet (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!? :p

Endret av YaNkEs
Skrevet

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 ?

Skrevet (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 av YaNkEs
Skrevet (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 av grimjoey

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