Codice PHP:
$file = fopen($titolo.".html", 'w');
Codice PHP:
$file = fopen($titolo.".html", 'w');
Ho modificato il messaggio al tuo stesso tempo![]()
Adesso tutto funziona. Ho notato però una cosa, cioè, le variabili nella pagina creata sono inserite tra le due parentesi {nome} - {titolo} ... Non è possibile togliere le parentesi lasciando solo la variabile ?
Grazie.
Fai come preferisci. Il codice che ti è stato postato e un sostitutore
Codice PHP:
$page = preg_replace("{titolo}", $titolo, $tpl);
Ovvero, cerca {titolo} ( o qualsiasi altra cosa ) e la sostituisci con il testo contenuto in una variabile
Uhm, sicuramente sbaglio qualcosa (di nuovo), se modifico la stringa in questo modo:
e nel template.html modifico in:codice:$page = preg_replace("titolo", $titolo, $tpl); $page = preg_replace("nome", $titolo, $tpl);
Cioè vado a levare le parentesi {} di segnaposto, i 2 valori non vengono sostituiti e viene generata una pagina vuota. Mentre se lascio {nome} / {titolo}, viene sostiuito il valore ma non vengono tolte le parentesi.codice:<h2>titolo - inserita da: nome</h2>
![]()
al posto diCodice PHP:
$page = preg_replace("nome", $nome, $page);
Codice PHP:
$page = preg_replace("nome", $titolo, $tpl);
Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.
Probabilmente avevo sbagliato nel copiare il codice dall'editor. Però, fatte le modifiche come consigliato, non funziona ancora. Cioè, tutto perfetto, tranne quelle parentesi che restano.![]()
cosa vuol dire le parentesi che restano? le parentesi restano percheè nel template avrai messo {titolo} mentre in uno dei recenti post hai modificato il replace andando a rimpiazzare la stringa "titolo" invece che la stringa "{titolo}". è ovvio che le parentesi restano.
Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.
Mi spiego. Se metto:
e nel template.html inserisco:codice:$page = preg_replace("{titolo}", $titolo, $tpl);
la pagina $titolo.html viene creata correttamente ma il risultato è <h2>{Variante}</h2>, cioè la variante viene inserita, ma le parentesi restano.codice:<h2>{titolo}</h2>
Invece, se metto:
e nel template.html inserisco:codice:$page = preg_replace("titolo", $titolo, $tpl);
la pagina creata $titolo.html risulta priva di codice, totalmente bianca.codice:<h2>titolo</h2>
Spero di essere stato più chiaro.
![]()
Grazie.
Il fatto che le parentesi "restano" potrebbe essere perchè non hai usato la sintassi corretta delle espriessioni regolari. Se guardi il mio primo post vedrai che c'erano anche delle parentesi quadre, che poi tu hai tolto. Rimettile e vedrai che funziona.
Io ti consiglio di lasciare così, cioè con i segnaposto fatti con le graffe. Non le ho messe a caso ma perchè così diminuisci la possibilità di errore: immagina di usare un segnaposto fatto così "titolo" invece che così "{titolo}". Cosa succede? che oltre a rimpiazzare il segnaposto rimpiazzi anche tutte le altre occorrenze della parola titolo, magari vai a beccare un testo che contiene la parola titolo, o un pezzo di codice javascript dove scrivi "var titolo = 1"... invece usando le parentesi graffe DISTINGUI i segnaposto dalle parole normali.
Poi se prosegui per la tua strada e vuoi togliere le graffe, posta l'intero codice che non funziona. c'è sicuramente qualche errore sciocco o di copia-incolla, perchè la logica è identica e deve funzionare.
Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.
Grazie per la spiegazione.
Effettivamente, inserendo le parentesi quadre in questo modo:
nella pagina $titolo.html, la variante {titolo} viene sostituita con la variabile e senza parentesi graffe.codice:$page = preg_replace("[{nome}]", $nome, $page); $page = preg_replace("[{titolo}]", $titolo, $tpl);
Mentre la variante {nome} non viene sostituita, nella pagina generata resta: {nome}![]()
Ecchecc... Ok, a me va benissimo tenere pure le parentesi graffe nella pagina creata ma ... provo profondo odio nelle parentesi graffa, da ieri.![]()