Newsgroup: it.comp.www.php
Titolo: [GIOCHINO PER TUTTI] Togliere gli attributi

Visto che i due giochini precedenti erano abbastanza difficilotti, ne volevo
proporre uno che fosse per tutti...
OBIETTIVO: eliminare tutti gli attributi dei tag di una pagina html
LIMITAZIONI: si deve leggere il file carattere (Es: substr($file,$pos,1))
per carattere usando cicli, variabili, funzioni proprie e la funzione
substr() usata come nell'esempio, istruzioni di controllo.
Consiglierei a chi volesse pubblicare la sua soluzione di farlo in modo che
non appaia direttamente facendo l'anteprima del messaggio (quindi con un
pacco di righe vuote prima). Magari in questo modo chi non vuole vedere la
soluzione non può farlo "per caso"...
Anche stavolta spero di non aver dimenticato dettagli da escludere per
evitare di svolgere il gioco come l'ho inteso...
*Divertitevi*!!!
LAMASE

substr() usata come nell'esempio, istruzioni di controllo.
Possiamo ipotizzare che il codice HTML sia "pulito", ovvero non contenga
scherzucci come "Se a < b" anziche' il corretto "Se a &lt; b"?
Perche' in quel caso, una macchina a stati e' la morte sua :-)
	for ($s=$i=0; $i < $filelen; $i++)
	{
		$c = substr($file, $i, 1);
		if ($c=='<') $s=1;
		elseif ($c=='>') $s=0; 
		elseif ($s==0) $stripped .= $c;
	}
Leonardo che a dire il vero non ci ha provato

 scherzucci come "Se a < b" anziche' il corretto "Se a &lt; b"?
Ah! vanno tolti gli attributi, non i tag!
<font face="verdana" size="2">Ciao!</font>
deve venire
<font>Ciao!</font>
--------------Sotto le modifiche al tuo codice...-----------------
for ($i=0; $i < $filelen; $i++)
{
 $c = substr($file, $i, 1);
 if ($c == '<') $tag = 2;
 elseif ($c == '>') $tag = 0;
 elseif (($tag == 2) and ($c == " ")) $tag = 1;
 if ($tag == 1) continue;
 $stripped .= $c;
}
LAMASE

 LIMITAZIONI: si deve leggere il file carattere (Es: substr($file,$pos,1))
substr($file,$pos,1) equivale a $file{$pos}
:)


Visto i vostri tentativi e mi domando cosa succede con:
1) <!-- tu sei l'apertura '<' Sono la chiusura'>' -->
2) <TD title=">ciao<">&lt;Ciao&gt;</TD>
3) possiamo anche non divietare script
<SCRIPT>
document.write('<ciao');
</SCRIPT>
:P

 </SCRIPT>
Beh, si.... diciamo che il giochino nasceva senza i reali problemi che si
possono avere... cmq si può fare anche questo, naturalmente...
LAMASE

"LAMASE" <a@b.c> wrote in message
news:a3ol6o$oe5$1...@fe2.cs.interbusiness.it...

Allora via libera al parser...
:-D

Ah! vanno tolti gli attributi, non i tag!
Si aggiunge uno stato. Se sei in stato "<", e arriva uno ">", entri
in stato "ignore" da cui esci solo all'arrivo del >.
Questo, pero', richiede di aggiungere un ulteriore stato - saro' un
volpedo? - per tenere conto dei commenti. Quindi nello stato "<" il
simbolo "!" (tecnicamente ci vorrebbero i sottostati per -- -- come
da RFC) entra in stato commento, e ne esce solo alla ricezione di >
come per ignore, pero' intanto passa tutto.
Non sarebbe malvagio un template per macchine a stati in PHP... :-6
Leonardo


Se poi implementato come modulo per il php sarebbe meglio, la performance va
giu' di brutto se lo implementi in PHP... :',-(



Quello non sarebbe un problema... piu' che altro, il callback ci deve
pure essere (con che peso, dipende)... e quello dovra' essere PHP.
Pero', ora guardo. Potrebbe essere interessante. Lavori con le XSM?
Leonardo

 Pero', ora guardo. Potrebbe essere interessante. Lavori con le XSM?
No...