Newsgroup: it.comp.www.html
Titolo: Richiesta aiuto

Scrivo per la prima volta su questo ng che mi
riprometto di seguire con attenzione da oggi in
avanti.
Ho un grosso problema e vi chiedo un aiuto.
Ho un sito di oltre 5000 pagine.
Tutte le pagine sono attualmente statiche con estensione .htm
il sito è visivamente strutturato con un corpo centro / sinistra
ed una colonna di navigazione a destra.
Ogni volta che dovevo apportare le modifiche alla colonna a
destra era un trauma perché andavo a modificare - pur con
trova e sostituisci di dreamweaver - il codice di 5000 pagine
e poi lo ricaricavo online.
Ora mi sti cimentando con le ssi visto che mi permetterebbero
di gestire questa colonna in modo dinamico e molto più semplice.
Ho fatto delle prove e tutto sembra funzionare.
Estendere il lavoro di prova a tutto il sito, però, comporterebbe :
- inserire la ssi al posto dell'attuale codice della colonna in tutte
  le pagine
- modificare tutte le pagine .htm in .shtml
Ora, il primo punto è semplice. Lo faccio con il trova e sostituisci di DW.
Avrei bisogno del vostro aiuto per il secondo punto : come trasformare
tutte le pagine .htm in .shtml, magari è una bazzecola ma io non so farlo
a meno di non mettermi a farlo a mano... !!!
Una volta sistemato il problema dell'estensione delle pagine però,
credo che ci sarebbero problemi con i link che rimandano alle pagine.
Attualmente infatti gli oltre 200.000 link rimandano a pagine .htm
mentre poi dovrebbero rimandare a pagine.shtml...
Insomma, un casino.
Chi mi saprebbe dare una mano ?
Ciao
Fil 

 Chi mi saprebbe dare una mano ?
Senza entrare nello specifico: da dos il comando ren *.html *.shtml,
digitato nella directory contenente le pagine, e poi un bel trova e
sostituisci in tutte le pagine (trovi html e sostituisci con shtml), perché
DW non dovrebbe farlo anche coi link? Probabilmente lo puoi fare in tutte le
pagine contemporaneamente con DW.

 ha scritto nel messaggio 
news:j_Sfd.214830$35.10...@news4.tin.it...

Ma, che sappia io, con DW puoi trovare e sostituire
tutto ciò che è contenuto nelle pagine, non l'estensione
delle pagine stesse.
Ciao
Fil 

delle pagine stesse.
Non ho ben capito, ma se l'estensione devi modificarla in locale, ci sono
parecchi programmi che ti permettono di farlo.
Se invece è in remoto, passo.
La sostituzione di «html» invece è rognosa, visto che non puoi modificare
*tutte* queste stringhe, ché suppongo qualche link punti a pagine esterne
al tuo sito.
-- 
Ciao, Massimo | ICQ# 57669970 | Jabber: 
pet...@jabber.linux.it
- La bellezza salverà il mondo. -

 al tuo sito.
Ecco. Ci avevo pensato.
Con DW mi becca un bel po' di collegamenti (non saprò mai se tutti)
mettendo anche solo ".htm" nella ricerca del codice.
Posso quindi facilmente sostiuire con shtml o shtm.
Il fatto è che non so se :
a) mi becca tutti i link senza perdersene qualcuno
    (non potrei ovviamente più capire dove sono i link non funzionanti
    dopo la modifica)
b) così mi modifica anche eventuali link esterni.
Insomma, come dicevo, un bel casino...
Ciao e grazie comunque.
Filippo
Icq # 23896333 

b) così mi modifica anche eventuali link esterni.
Se vuoi impegnarti un po' vedi se con Sed puoi risolvere. Purtroppo non
posso esserti di molto aiuto perché lo conosco pochissimo, ma credo che
non ci siano altri programmi altrettanto buoni, per fare lavori sporchi
come questo. Purtroppo temo che nemmeno le espressioni regolari possano
esserti d'aiuto, per questo potresti vedere se con Sed puoi trovare una
strada alternativa (ad esempio: in un file hai la lista hai le stringhe
che debbono essere modificate, e in un altro le rispettive modifiche).
Nel caso bastassero le RegExp invece, è sufficiente un qualsiasi editor
decente.
E sennò... forza e coraggio!


decente.
Guarda, per aiutarti a risolvere il problema stasera mi sono imparato pure
le RegExp :)
Per sapere cosa sono le espressioni regolari, inizia leggendo qua:
http://fido.altervista.org
Leggi almeno i primi paragrafi, ti aiuterà a capire il seguito.
Allora, tanto per cominciare ho usato SciTE:
http://scintilla.sourceforge.net/SciTE.html
Non devi usare per forza questo, anzi magari ci sono pure degli editor più
veloci o per te migliori. Anzi, noto ora che SciTE non supporta nemmeno la
sostituzione in più file, per cui direi che non va proprio bene...
Se vuoi, puoi usare BkReplaceEm:
http://www.orbit.org/replace/
È un programma che fa solo il Search&Replace, e magari ti ci trovi meglio.
Altrimenti c'è Sed, come ti ho già consigliato, ma è tosto da usare, e non
so come te la cavi da riga di comando. Probabilmente è il migliore insomma
ma si deve saperlo maneggiare.
Qualunque programma tu decida di usare, accertati solo che usi la medesima
sintassi, altrimenti cambia le stringhe a seconda del caso (basta guardare
i manuali ^__^ ).
Ah, dovrebbe essere inutile dirlo ma lo dico lo stesso: *fai prima qualche
prova, e tieniti comunque un backup dei file!*
Ma passiamo al nocciolo.
Per arrivare alla soluzione sono partito dalle stringhe:
www.example.com/main.html
www.example.com/doc/prova.html
www.example.com/contrib/free.html
www.example.com/index.html
A questo punto c'era da trovare un'espressione regolare che:
o Lasciasse perdere 
www.example.com/
 ;
o Lasciasse perdere qualunque stringa tra la precedente e l'estensione;
o Modificasse l'estensione «html» in «shtml»;
Per la prima e l'ultima clausola era tutto semplice ma il problema era con
l'ultima. Leggendo qua e là, e facendo molti tentativi, sono arrivato a:
Trova:
example\.com/\(.*\)\.html
Sostituisci con:
example.com/\1.shtml
Nel dettaglio:
- Lo slash «\» significa «quello che segue non è un'espressione regolare»,
e questo è utile perché appunto consideri il punto come un semplice punto,
scusa la ripetizione, e non come metacarattere.
- L'espressione «\(» (e la corrispondente «\)») ci serve per «inscatolare»
quello che contiene. Ora non la consideriamo, poi lo spiego meglio.
- L'espressione «.*» significa «una qualsiasi sequenza di caratteri».
Quindi stiamo dicendo al nostro programma: cerca una qualsiasi stringa che
contenga «
example.com/
», continui con una qualsiasi sequenza di caratteri,
ed infine termini con «.html». E questo dovrebbe essere appunto quello che
ci interessa!
La sostituzione, ora:
- «
example.com/
» penso sia palese. Semplicemente, lasciamo tutto com'è.
- L'espressione «\1» è quelle interessante, e che mi ha fatto dannare. Non
riuscivo infatti a capire come far sì che nella sostituzione non venissero
messi i caratteri delle RegExp (il punto o l'asterisco, ad esempio)! Ma la
soluzione era a portata di mano: bastava «inscatolare» l'espressione (così
ora capisci a che serviva), e quindi richiamarla con uno slash, seguito da
un numero che la identificasse. Poiché la nostra espressione contiene solo
una scatola, basta appunto «\1». Se fosse stata la seconda, avremmo invece
dovuto richiamarla con «\2», e così via.
- Infine abbiamo semplicemente messo «.shtml» invece di «html».
Riassumendo, stiamo dicendo al programma: Lascia il primo pezzo invariato,
e non toccare nemmeno quello che c'è prima dell'estensione, qualunque cosa
sia. Modifica solo il finale «.html» in «.shtml».
A questo punto basta dare *Invio*, ed automagicamente si ottiene:
www.example.com/main.shtml
www.example.com/doc/prova.shtml
www.example.com/contrib/free.shtml
www.example.com/index.shtml
Mentre un ipotetico:
www.prova.com/qualcosa/index.html
Non avrebbe riscontri.
Spero di essere stato abbastanza esauriente, se mi sono dilungato è perché
credo sia sempre meglio insegnare a pescare, che non regalare un pesce. In
questo modo sai cosa stai facendo, e magari riesci a modificare da solo la
RegExp secondo i tuoi bisogni.
Non ho certo la pretesa d'averti spiegato l'uso delle espressioni regolari
nel loro complesso, ma almeno a qualcosa spero sia servito.
(Ah, non ho impostato il f/up, e non so come la pensi il moderatore, visto
che qua non si sta parlando di codice, ma eventualmente possiamo spostarci
sul gruppo it.comp.software.editor, che direi appropriato al tema...)


 le RegExp :)
Cavolo ma grazieee !
Sei un mito.
Logicamente mi farò aiutare ma le tue indicazioni
sono preziose se non vitali !
Grazie davvero.
A presto.
Fil 

sono preziose se non vitali !
Non è nulla, davvero :)
Comunque non ho considerato una cosa: probabilmente i link alle pagine del
tuo sito sono relativi e non assoluti, per cui devi cambiare la regola. Ho
pensato che possa andar bene una che:
o Prenda le stringhe contenute tra «<a» e «>»;
o Non consideri quelle in cui è presente «http://»;
o Modifichi solo l'estensione.
È un po' più complicata della mia, ma non impossibile da farsi ;)


 Non è nulla, davvero :)
Guarda, dopo tutto il tempo che ti ho fatto sprecare,
i miei fornitori di hosting si sono decisi ad attivarmi
le ssi sulle pagine .htm
Il problema quindi è stato brutalmente aggirato :-)
Ciao e grazie ancora.
Filippo