Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #20524 > unrolled thread

right trim "br" da un DOM

Started bySandro kensan <kensan@kensan.it>
First post2016-03-18 16:47 +0100
Last post2016-03-21 08:09 +0000
Articles 20 — 4 participants

Back to article view | Back to it.comp.www.php


Contents

  right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-18 16:47 +0100
    Re: right trim "br" da un DOM Alessandro Pellizzari <shuriken@amiran.it> - 2016-03-18 16:40 +0000
      Re: right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-18 20:46 +0100
      Re: right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-18 22:26 +0100
        Re: right trim "br" da un DOM Alessandro Pellizzari <shuriken@amiran.it> - 2016-03-19 08:29 +0000
          Re: right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-19 15:00 +0100
            Re: right trim "br" da un DOM "ciccio" <21669invalid@mynewsgate.net> - 2016-03-19 14:51 +0000
              Re: right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-19 21:25 +0100
            Re: right trim "br" da un DOM Alex <tommaso5ita@yahoo.it> - 2016-03-20 20:01 +0100
              Re: right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-20 20:38 +0100
                Re: right trim "br" da un DOM Alex <tommaso5ita@yahoo.it> - 2016-03-21 13:41 +0100
                  Re: right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-21 14:19 +0100
                    Re: right trim "br" da un DOM "ciccio" <21669invalid@mynewsgate.net> - 2016-03-21 16:53 +0000
                      Re: right trim "br" da un DOM Alex <tommaso5ita@yahoo.it> - 2016-03-21 18:29 +0100
                        Re: right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-21 21:30 +0100
                          Re: right trim "br" da un DOM "ciccio" <21669invalid@mynewsgate.net> - 2016-03-21 22:18 +0000
                      Re: right trim "br" da un DOM Alex <tommaso5ita@yahoo.it> - 2016-03-21 18:29 +0100
                    Re: right trim "br" da un DOM Alex <tommaso5ita@yahoo.it> - 2016-03-21 18:28 +0100
                      Re: right trim "br" da un DOM Sandro kensan <kensan@kensan.it> - 2016-03-21 21:19 +0100
              Re: right trim "br" da un DOM "ciccio" <21669invalid@mynewsgate.net> - 2016-03-21 08:09 +0000

#20524 — right trim "br" da un DOM

FromSandro kensan <kensan@kensan.it>
Date2016-03-18 16:47 +0100
Subjectright trim "br" da un DOM
Message-ID<dl2m93Fado5U3@mid.individual.net>
Salve,
vorrei togliere l'ultimo o gli ultimi <br> da un DOM in modo tale che
non ci siano mai prima di un </body>. Esempio:

<body>
  Ciao,<br>
  come stai?<br>
  Bene, grazie.<br>
  <br>
</body>

==>

<body>
Ciao,<br>
come stai?<br>
Bene, grazie.
</body>

In pratica un right trim per i <br> sul DOM.

Forse dovrei fare qualche cosa di questo tipo:

  @$dom->loadHTML($strHtml);
  //trim last <br> in the DOM
  $brs = $dom->getElementsByTagName('br');
  $count = $brs->length;
  $lastbr = $brs[$count-1]:
e poi vedere se l'elemento successivo a $lastbr è </body> ma non so come
farlo.

Avete un aiuto da darmi?

-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [next] | [standalone]


#20525

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2016-03-18 16:40 +0000
Message-ID<dl2pc9Fcks4U1@mid.individual.net>
In reply to#20524
On 18/03/2016 15:47, Sandro kensan wrote:

> In pratica un right trim per i <br> sul DOM.
>
> Forse dovrei fare qualche cosa di questo tipo:
>
>    @$dom->loadHTML($strHtml);
>    //trim last <br> in the DOM
>    $brs = $dom->getElementsByTagName('br');
>    $count = $brs->length;
>    $lastbr = $brs[$count-1]:
> e poi vedere se l'elemento successivo a $lastbr è </body> ma non so come
> farlo.
>
> Avete un aiuto da darmi?

O usi XPath per trovare solo i br figli diretti di body, oppure fai un 
getElementByTagName('body')[0]->childNodes, e controlli se l'ultimo è un 
br, quindi lo cancelli.

Bye.

[toc] | [prev] | [next] | [standalone]


#20526

FromSandro kensan <kensan@kensan.it>
Date2016-03-18 20:46 +0100
Message-ID<dl349hFf2eiU1@mid.individual.net>
In reply to#20525
On 18/03/2016 17:40, Alessandro Pellizzari wrote:
> On 18/03/2016 15:47, Sandro kensan wrote:
> 
>> In pratica un right trim per i <br> sul DOM.
>>
>> Forse dovrei fare qualche cosa di questo tipo:
>>
>>    @$dom->loadHTML($strHtml);
>>    //trim last <br> in the DOM
>>    $brs = $dom->getElementsByTagName('br');
>>    $count = $brs->length;
>>    $lastbr = $brs[$count-1]:
>> e poi vedere se l'elemento successivo a $lastbr è </body> ma non so come
>> farlo.
>>
>> Avete un aiuto da darmi?
> 
> O usi XPath per trovare solo i br figli diretti di body, oppure fai un
> getElementByTagName('body')[0]->childNodes, e controlli se l'ultimo è un
> br, quindi lo cancelli.

posso fare un:
$bodynode = $dom->getElementByTagName('body')[0];
$childs = $bodynode->childNodes;
$count = $childs->length;
$lastchild = $childs[$count-1]:

foreach ($childs as $child) {
    // do something with this node
}

Adesso tento di implementarlo e ti faccio sapere.
-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#20527

FromSandro kensan <kensan@kensan.it>
Date2016-03-18 22:26 +0100
Message-ID<dl3a39Ff2eiU2@mid.individual.net>
In reply to#20525
On 18/03/2016 17:40, Alessandro Pellizzari wrote:

> O usi XPath per trovare solo i br figli diretti di body, oppure fai un
> getElementByTagName('body')[0]->childNodes, e controlli se l'ultimo è un
> br, quindi lo cancelli.

è stato complicato ma ci sono esempi validi in Rete per cui sono
riuscito a comporre il mosaico pur conoscendo quasi nulla. Ecco il mio
script che funziona:

  //trim lasts <br> in the DOM
  $element = $dom->getElementsByTagName("body")->item(0);
  $childs = $element->childNodes;
  for ($i = $childs->length; --$i >= 0; ) {
    $el = $childs->item($i);
    if ($el->nodeName == "br") $el->parentNode->removeChild($el);
    else break;
  }

Sai dirmi quanto è compatibile cancellare i noti scorrendo a ritroso una
lista come la mia? Sarà sempre compatibile?

-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#20528

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2016-03-19 08:29 +0000
Message-ID<dl4gvnFpotkU1@mid.individual.net>
In reply to#20527
Il Fri, 18 Mar 2016 22:26:01 +0100, Sandro kensan ha scritto:

> Sai dirmi quanto è compatibile cancellare i noti scorrendo a ritroso una
> lista come la mia? Sarà sempre compatibile?

Non te lo so dire con sicurezza, ma di solito cancellare dalla fine di una 
lista è una delle operazioni meno pericolose. :)

L'unica cosa a cui dovresti stare attento è che potrebbero non essere solo 
<br> alla fine, ma anche TextNode vuoti, o con solo spazi, tab o a-capo.

In pratica una cosa così:

  <br>
  Qualcosa.
  <br>
  <br>
</body>

sarà

TextNode<  >
Tag<br>
TextNode<\n  Qualcosa.\n  >
Tag<br>
TextNode<\n  >
Tag<br>
TextNode<\n>
TagEnd<body>

Bye.

[toc] | [prev] | [next] | [standalone]


#20530

FromSandro kensan <kensan@kensan.it>
Date2016-03-19 15:00 +0100
Message-ID<dl54ccF717U1@mid.individual.net>
In reply to#20528
On 19/03/2016 09:29, Alessandro Pellizzari wrote:

> L'unica cosa a cui dovresti stare attento è che potrebbero non essere solo 
> <br> alla fine, ma anche TextNode vuoti, o con solo spazi, tab o a-capo.

Per adesso il problema credo non si ponga in quanto uso un vecchio
programma di nome KompoZer per fare i miei semplicissimi testi html,
questo programma rielabora l'html e cose come quelle che dici tu non le
permette. Certo che uno spazio vuoto è possibile e dovrei modificare il
mio codice ma pure un <p></p> è possibile, lo spazio, però, lo vedo più
probabile nel mio caso.

Se usassi un editor di testo allora i casi come quelli mostrati nel tuo
esempio sono possibilissimi.
-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#20531

From"ciccio" <21669invalid@mynewsgate.net>
Date2016-03-19 14:51 +0000
Message-ID<2016031914513921669@mynewsgate.net>
In reply to#20530
Sandro kensan <kensan@kensan.it> ha scritto:

> On 19/03/2016 09:29, Alessandro Pellizzari wrote:
> 
> > L'unica cosa a cui dovresti stare attento è che potrebbero non essere solo 
> > <br> alla fine, ma anche TextNode vuoti, o con solo spazi, tab o a-capo.
> 
> Per adesso il problema credo non si ponga in quanto uso un vecchio
> programma di nome KompoZer

Ti conviene passare a BlueGriffon (http://bluegriffon.org)
KompoZer è fermo da molto tempo.

[toc] | [prev] | [next] | [standalone]


#20532

FromSandro kensan <kensan@kensan.it>
Date2016-03-19 21:25 +0100
Message-ID<dl5qtqF2ud0U1@mid.individual.net>
In reply to#20531
On 19/03/2016 15:51, ciccio wrote:

> Ti conviene passare a BlueGriffon (http://bluegriffon.org)
> KompoZer è fermo da molto tempo.

Grazie per il link, ho visto che sono andati avanti con lo sviluppo ma
dovrei compilarmi i sorgenti in quanto non c'è per la mia distro.

-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#20533

FromAlex <tommaso5ita@yahoo.it>
Date2016-03-20 20:01 +0100
Message-ID<ncms2s$2597$1@adenine.netfront.net>
In reply to#20530
Il 19/03/2016, Sandro kensan ha detto :
> On 19/03/2016 09:29, Alessandro Pellizzari wrote:
>
>> L'unica cosa a cui dovresti stare attento è che potrebbero non essere solo 
>> <br> alla fine, ma anche TextNode vuoti, o con solo spazi, tab o a-capo.
>
> Per adesso il problema credo non si ponga in quanto uso un vecchio
> programma di nome KompoZer per fare i miei semplicissimi testi html,
> 

KompoZer era bellissimo, ma si è fermato all' html4 strict.
Il suo javascript è aggiornato alla stessa epoca ...

BlueGriffon è difficile da adoperare, almeno io l'ho trovato difficile.
Magari adesso è cambiato.

Bye

-- 
Alex

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

[toc] | [prev] | [next] | [standalone]


#20534

FromSandro kensan <kensan@kensan.it>
Date2016-03-20 20:38 +0100
Message-ID<dl8chqFpv1cU1@mid.individual.net>
In reply to#20533
On 20/03/2016 20:01, Alex wrote:

> KompoZer era bellissimo, ma si è fermato all' html4 strict.
> Il suo javascript è aggiornato alla stessa epoca ...

è sicuramente vecchio ma io lo uso solo per fare dei testi semplicissimi
che sono solo il core delle mie pagine web.
> 
> BlueGriffon è difficile da adoperare, almeno io l'ho trovato difficile.
> Magari adesso è cambiato.

Quando ci sarà la versione per la mia distro lo proverò sicuramente.
-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#20536

FromAlex <tommaso5ita@yahoo.it>
Date2016-03-21 13:41 +0100
Message-ID<ncoq5b$q3g$1@adenine.netfront.net>
In reply to#20534
Scriveva Sandro kensan domenica, 20/03/2016:
> On 20/03/2016 20:01, Alex wrote:
>
>> KompoZer era bellissimo, ma si è fermato all' html4 strict.
>> Il suo javascript è aggiornato alla stessa epoca ...
>
> è sicuramente vecchio ma io lo uso solo per fare dei testi semplicissimi
> che sono solo il core delle mie pagine web.

Ah sì, dei frammenti.
Poi magari li 'impacchetti' dentro una variabile php.
Simpatico il sistema e Kompozer va benissimoo per questo.

Bye

-- 
Alex

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

[toc] | [prev] | [next] | [standalone]


#20537

FromSandro kensan <kensan@kensan.it>
Date2016-03-21 14:19 +0100
Message-ID<dlaaniF9ldaU1@mid.individual.net>
In reply to#20536
On 21/03/2016 13:41, Alex wrote:

> Ah sì, dei frammenti.

Cioè? ha anche un nome quello che faccio? Io non l'ho imparato da
nessuno l'ho pensato e l'ho realizzato.

> Poi magari li 'impacchetti' dentro una variabile php.

Non so se è quello che dici. Praticamente ho voluto avere un file html
che contenga il testo senza fronzoli. I miei html contengono solo testo,
immagini, link e un po' di stile di testo.

Questo per avere un file "fisico" che non metto in mysql per cercare di
"separare" il contenuto dal contrenitore e per avere un facile backup.
Semplicemente non mi fidavo di mysql.

> Simpatico il sistema e Kompozer va benissimoo per questo.

Veramente? Le mie pagine html vengono in effetti caricate ed elaborate
dal php e alla fine c'è un echo $body che stampa il body della pagina
html all'interno di un layout (o come si chiama).

-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#20538

From"ciccio" <21669invalid@mynewsgate.net>
Date2016-03-21 16:53 +0000
Message-ID<2016032116532221669@mynewsgate.net>
In reply to#20537
Sandro kensan <kensan@kensan.it> ha scritto:

CUT
> Questo per avere un file "fisico" che non metto in mysql per cercare di
> "separare" il contenuto dal contrenitore e per avere un facile backup.
> Semplicemente non mi fidavo di mysql.

Come mai non ti "fidavi" di MySQL?

[toc] | [prev] | [next] | [standalone]


#20540

FromAlex <tommaso5ita@yahoo.it>
Date2016-03-21 18:29 +0100
Message-ID<ncpb15$29t3$1@adenine.netfront.net>
In reply to#20538
Il 21/03/2016, ciccio ha detto :
> Sandro kensan <kensan@kensan.it> ha scritto:
>
> CUT
>> Questo per avere un file "fisico" che non metto in mysql per cercare di
>> "separare" il contenuto dal contrenitore e per avere un facile backup.
>> Semplicemente non mi fidavo di mysql.
>
> Come mai non ti "fidavi" di MySQL?

Già. Che ti ha fatto?

Bye

-- 
Alex

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

[toc] | [prev] | [next] | [standalone]


#20543

FromSandro kensan <kensan@kensan.it>
Date2016-03-21 21:30 +0100
Message-ID<dlb3ufFgkj8U2@mid.individual.net>
In reply to#20540
On 21/03/2016 18:29, Alex wrote:
> Il 21/03/2016, ciccio ha detto :

>> Come mai non ti "fidavi" di MySQL?
> 
> Già. Che ti ha fatto?

mah, conoscevo poco di mysql, ho visto negli anni che anche fare porting
del data base da hosting provider all'altro è abbastanza semplice. A
volte occorre lasciare un server e andare in altri lidi.

Però è ovvio che mysql non è un luogo virtuale semplice e gli
inconvenienti sono dietro l'angolo. Il mio sito ha molti anni per cui
ogni problema è possibile tra cui la dismissione di mysql e/o il
trasferimento ad altri tipi di db.

Un file html rimane tale negli anni, non ci sono problemi come nel caso
dell'incapsulamento in un DB.

Adesso pare prendere piede maria DB che per fortuna è pienamente
compatibile con mysql.
-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#20544

From"ciccio" <21669invalid@mynewsgate.net>
Date2016-03-21 22:18 +0000
Message-ID<2016032122180921669@mynewsgate.net>
In reply to#20543
Sandro kensan <kensan@kensan.it> ha scritto:

> On 21/03/2016 18:29, Alex wrote:
> > Il 21/03/2016, ciccio ha detto :
> 
> >> Come mai non ti "fidavi" di MySQL?
> > 
> > Già. Che ti ha fatto?
> 
> mah, conoscevo poco di mysql, ho visto negli anni che anche fare porting
> del data base da hosting provider all'altro è abbastanza semplice. A
> volte occorre lasciare un server e andare in altri lidi.

Ovvio che è semplice, basta esportare i dati in un file
ed importarli dove vuoi. SQL è uno standard.

> Però è ovvio che mysql non è un luogo virtuale semplice e gli
> inconvenienti sono dietro l'angolo. Il mio sito ha molti anni per cui
> ogni problema è possibile tra cui la dismissione di mysql e/o il
> trasferimento ad altri tipi di db.

Mah non si capisce che paura hai... Come detto sopra basta
esportare i tuoi dati in un file .sql ed importarli poi
dove vuoi. Se proprio c'è bisogno di una conversione
si fa un programmino convertitore. Tutto qui.

> Un file html rimane tale negli anni, non ci sono problemi come nel caso
> dell'incapsulamento in un DB.

?!

Ma scusa cosa dovresti "incapsulare" in un DB?

In un DB ci sono dei campi con tipi precostituiti in cui memorizzare le
informazioni. Se proprio hai bisogni particolari ci sono i campi BLOB, ma
anch'essi possono benissimo essere esportati.

> Adesso pare prendere piede maria DB che per fortuna è pienamente
> compatibile con mysql.

Certo ne è un fork, non poteva essere diversamente.

[toc] | [prev] | [next] | [standalone]


#20541

FromAlex <tommaso5ita@yahoo.it>
Date2016-03-21 18:29 +0100
Message-ID<ncpb1l$29u4$1@adenine.netfront.net>
In reply to#20538
Il 21/03/2016, ciccio ha detto :
> Sandro kensan <kensan@kensan.it> ha scritto:
>
> CUT
>> Questo per avere un file "fisico" che non metto in mysql per cercare di
>> "separare" il contenuto dal contrenitore e per avere un facile backup.
>> Semplicemente non mi fidavo di mysql.
>
> Come mai non ti "fidavi" di MySQL?

Già. Che ti ha fatto?

Bye

-- 
Alex

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

[toc] | [prev] | [next] | [standalone]


#20539

FromAlex <tommaso5ita@yahoo.it>
Date2016-03-21 18:28 +0100
Message-ID<ncpavp$29q2$1@adenine.netfront.net>
In reply to#20537
Scriveva Sandro kensan lunedì, 21/03/2016:
> On 21/03/2016 13:41, Alex wrote:
>
>> Ah sì, dei frammenti.
>
> Cioè? ha anche un nome quello che faccio? Io non l'ho imparato da
> nessuno l'ho pensato e l'ho realizzato.
>
>> Poi magari li 'impacchetti' dentro una variabile php.
>
> Non so se è quello che dici. Praticamente ho voluto avere un file html
> che contenga il testo senza fronzoli. I miei html contengono solo testo,
> immagini, link e un po' di stile di testo.
>

Ci sono dei vantaggi e degli svantaggi.
Il vantaggio è quello di avere un codice che 'si capisce'. Senza 
terribili miscugli di html e php con continue interruzioni

?>
   html, html
   html, html
<?php

e giri logici anche impensabili.
la lettura di quello che fa il codice è più agevole.

Lo svantaggio, penso, è quello di inviare una unica stringa al browser. 
Fino a quando non la riceve non fa nulla, mentre se invii la pagina un 
po' per volta inizia intanto ad eleborarla.

Bye

-- 
Alex

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

[toc] | [prev] | [next] | [standalone]


#20542

FromSandro kensan <kensan@kensan.it>
Date2016-03-21 21:19 +0100
Message-ID<dlb3a9Fgkj8U1@mid.individual.net>
In reply to#20539
On 21/03/2016 18:28, Alex wrote:

> Ci sono dei vantaggi e degli svantaggi.
> Il vantaggio è quello di avere un codice che 'si capisce'. Senza
> terribili miscugli di html e php con continue interruzioni
> 
> ?>
>   html, html
>   html, html
> <?php
> 
> e giri logici anche impensabili.
> la lettura di quello che fa il codice è più agevole.

beh, sì. Si tratta di solo html quindi non c'è alcun php e poi posso
usare un editor esterno e non crearmene uno ad hoc come in wordpress.

Potevo comunque fare l'upload della pagina html e poi farla inserire in
mysql da uno script, oppure potevo fare un copia e incollar in un form e
poi inserirla in mysql: le opzioni sono tante.

Io ho scelto un vero file html che mio CMS preleva ed estrae il body, lo
elabora attraverso il DOM e lo inserisce nell'intelaiatura, tutto fatto
in php.

> Lo svantaggio, penso, è quello di inviare una unica stringa al browser.
> Fino a quando non la riceve non fa nulla, mentre se invii la pagina un
> po' per volta inizia intanto ad eleborarla.

No, non funziona così. La pagina viene composta tutta lato server in
pochi decimi di secondo e viene mandata al browser secondo i tempi di
caricamento standard.

In pratica è così:

|-----------------|
| Titolo          |
|-----------------|
|                 |
|                 |
|include(HTML)    |
|                 |
|-----------------|
|footer           |
-------------------

ovviamente i dati del titolo e del footer sono in mysql e l'include non
è un include ma è una lettura di un file e una elaborazione del DOM tra
cui l'elaborazione dei link ma comunque l'idea è quella raffigurata.

-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#20535

From"ciccio" <21669invalid@mynewsgate.net>
Date2016-03-21 08:09 +0000
Message-ID<2016032108091621669@mynewsgate.net>
In reply to#20533
Alex <tommaso5ita@yahoo.it> ha scritto:

CUT
> 
> KompoZer era bellissimo, ma si è fermato all' html4 strict.
> Il suo javascript è aggiornato alla stessa epoca ...
> 
> BlueGriffon è difficile da adoperare, almeno io l'ho trovato difficile.
> Magari adesso è cambiato.

BlueGriffon supporta HTML5, quindi è da preferire sempre e cmq a
KompoZer e agli altri che non supportano HTML5. Come facilità d'uso è
equiparabile agli altri software WYSIWYG, quindi non richiede
chissà quali conoscenze avanzate.


[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web