nopaste

Stato
Discussione chiusa ad ulteriori risposte.
A

asder99

Stavo provando a creare un nopaste ma ho dai problemi stranissimi:conigliomg:

Codice:
<html>
<body>
<form action='#' method='GET'>
   <textarea rows='50' cols='50' name='cod'>Qui il codice..</textarea>
   <input type='submit' name='Invia'>
</form>
<?php

$c = $_GET['cod'];
print nl2br($c);

?>

</body>
</html>

Allora se io metto nel textarea un codice in C tipo questo:

Codice:
#include <stdio.h>

int main(void) {
   int a;
   a = 2 + 2;
   printf("%d", a);
   return 0;
}

Innanzitutto nell'output l'indentazione non c'è poi <stdio.h> non viene scritto..per farla breve..

Codice:
#include

int main(void) {
int a;
a = 2 + 2;
printf("%d", a);
return 0;
}

ecco cosa ho in output
 
No..senza il nl2br avrei na cosa del genere..

Codice:
#include int main(void) { int a; a = 2 + 2; printf("%d", a); return 0; }

niente <br> insomma.
 
si che c'è guarda il source html... viene interpretato come tag dal browser e il nome del tag non viene mostrato....

bronsa ha detto:
nl2br sarebbe un highlight?
:eek: .. newline to br
per il newline stessa roba... se vai a guardare nel source va a capo quando deve, ma devi sostituirlo col br perchè vada a capo nella pagina interpretata...

attento a passare il code tramite GET... puoi trasportare un massimo di 255 bytes a richiesta
 
o_O so cos'è nl2br...

ma ha detto che fa un nopaste supponevo volesse metterci anche un highlight e che avesse sbaglaito funzione :S

comunque trasmetti tutto via post e usa htmlentities(stringa) per parsare
 
Era un esempio ho messo tutto a pazzo (variabile GET e omissione di htmlentities), per l'indentazione come posso risolvere?

EDIT: Sorry Malex non avevo visto il tuo post ^^
 
bronsa ha detto:
o htmlentities =|

si vabbè, + o - è la stessa cosa.
così oltretutto escapa anche le ", perché su una cosa tipo cout << "miao"; cin >> varibile non so come si sarebbero comportati i browser
 
stoner ha detto:
Usi il tag <pre></pre>.

ciao.

Grazie mille stoner. Una cosa però perchè mi stampa così:

Codice:
#include <stdio.h>

int main(void) {

   int a;

   a = 2 + 2;

   return 0;

}

metre dovrebbe essere così:

Codice:
#include <stdio.h>
int main(void) {
   int a;
   a = 2 + 2;
   return 0;
}
 
Ho risolto togliendo il nl2br.
Codice:
print "<pre>". htmlspecialchars($c) ."</pre>";

Grazie a tutti.
 
Stato
Discussione chiusa ad ulteriori risposte.