Newsgroup: it.comp.www.html
Titolo: Encode si, encode no...

Devo encodare un testo che ho in una variabile ma prima di farlo devo sapere 
se e' gia' encodato oppure no, altrimenti viene fuori un casino. Come 
faccio?
Saluti.
Luciano
--
Newsgroup robomoderato - gli articoli vengono approvati automaticamente

 faccio?
La codifica non è una proprietà che un testo ha o meno, la codifca è il 
modo di interpretare l'informazione, c'è sempre.
Detto questo la tua domanda non è chiara lo stesso dato che siamo su 
i.c.w.h. , qual è il problema?


 i.c.w.h. , qual è il problema?
Devo, ad esempio, trasformare il carattere "&" (e commerciale) in "&amp;" ma 
solo se questo non e' stato gia' fatto, altrimenti mi ritroverei con 
"&amp;amp;", quindi ho bisogno di verificare che il testo che ho non sia 
stato precedentemente htmlizzato.
Spero di essermi spiegato.
Saluti.
Luciano


 Spero di essermi spiegato.
di certo non è una cosa che fai con l'html, ti serve un linguaggio di
programmazione, e quello che vuoi fare puoi farlo con l'uso delle regexp.


 programmazione, e quello che vuoi fare puoi farlo con l'uso delle regexp.
Ovviamente serve un linguaggio di programmazione, non sono indispensabili le 
regexp. Ma la mia domanda non era come fare, ma come stabilire se un testo è 
stato già htmlizzato oppure no.
Saluti.
Luciano


 stabilire se un testo è stato già htmlizzato oppure no.
Una entity e` formata dal carattere "&", seguito da caratteri 
alfanumerici, e chiuso da un ";"
L'unico modo per sapere se, quando trovi una "&", e` gia` encodata o meno, 
e` di fare il parsing dei caratteri successivi. Se trovi un carattere non 
alfanumerico (compresi spazi, tab, a-capo, ecc.) prima di un ";", la devi 
encodare, altrimenti no.
Bye.


 Ovviamente serve un linguaggio di programmazione,
appunto, ripeto, di certo non con l'html (ergo: sei off topic)


 encodare, altrimenti no.
io prenderei tramite regexp tutte le occorrenze di "&.*;", e
verificherei che il match non sia presente nella translation table (cfr:
php 
http://de3.php.net/manual/en/function.get-html-translation-table.php
)
a quel punto la stringa matchata è da entitizzare
ah, nel caso non vi siamo match allora la pagina è da entitizzare tutta.
Comunque anche questa soluzione non va bene sempre, supponiamo che uno
voglia far apparire  la entity nella pagina, ad esempio nel
link sopra si puo' leggere :
Hallo &amp;amp; &amp;lt;Frau&amp;gt; &amp;amp; Kr&amp;auml;mer
ecco in questo caso (cioè la pagina VUOL far vedere la entity) non ci
sono funzioni di sorta, serve l'essere umano che fa a manina.
detto questo, ribadisco che il 3d è bellamente ot


 a quel punto la stringa matchata è da entitizzare
ho detto una cappella
la regexp è "&[^&]*;" (non greedy)
e la parte da entitizzare è un eventale non match nella tabella delle
entities + il resto del testo che non ha avuto match con la regexp


 la regexp è "&[^&]*;" (non greedy)
Specificando che anche per me siamo OT, e invitando Luciano a postare sul 
ng di PHP, io userei "&[::alpha::]+[::alnum::]*;" o "&[a-zA-Z]+[a-z-A-Z0-9]
*;"
Dovrei controllare se ci possono essere entity che iniziano con un numero.
Bye.


 appunto, ripeto, di certo non con l'html (ergo: sei off topic)
Ed io ti ripeto che non devo dehtmlizzare un testo ma solo verificare che 
non sia stato già htmlizzato.
Se dare una definizione di "testo html" (perchè di questo si tratta) e' OT 
in un gruppo che si chiama it.comp.www.html, allora ci sono seri problemi 
col manifesto del gruppo.
Grazie comunque a te ed Alessandro per le risposte.
Saluti.
Luciano


 testo che ho non sia stato precedentemente htmlizzato.
    ...skipped!
Puoi farlo con due semplicissime regexp.
Trasformi "&" (solo quello relativo all'entity) in un font che non
troverai mai nel testo, con un replace del value:
replace(/((\s&)(\w+;))/g," \u007F$3")
encodi il testo
e ritrasformi quel font in "&", sempre con un replace del value:
replace(/\u007F/g,"&")
-- 
    * b *       Il tuo post č privo del MIME, attivalo in OE.
  *   y   *       Per impostare correttamente Outlook Express
*   Piero   *       e OE-QuoteFix, puoi consultare Wikipedia:
http://wiki.news.nic.it/GuidaNr_2fOutlookExpress?action=recall&date=1172714805


 L'apostrofo curvo, per capirsi.
Basta trasformare la prima regexp cosě:
replace(/((&)(#?\w+;))/g,"\u007F$3")
-- 
    * b *
  *   y   *
*   Piero   *
[ /audaces fortuna iuvat/ ] 
