Visualizzazione risultati 1 fino 9 di 9

Discussione: Replace di testo con contenuto variabili

  1. #1
    Guest

    Smile Replace di testo con contenuto variabili

    Ciao,
    sto cercando di capire come fare ad ottenere il seguente risultato:

    Codice HTML:
    Questo è il mio {titolo}
    Codice PHP:
    <?php
    $titolo
    ="Titolo pagina";
    ?>
    Risultato

    Questo è il mio Titolo pagina

    Ho provato con ereg_replace e dei pattern ma non riesco ad ottenere il risultato corretto.
    Qualche aiuto?

    NB devo avere un qualcosa di standard cioè che trasformi tutti i {var} in variabili php quindi non solo titolo.
    Ultima modifica di svacant : 02-02-2009 alle ore 14.15.34

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    dovrebbe bastarti str_replace(). Piu' comodo se hai tutti i campi in un array
    Codice PHP:
    $campi = array(
    'titolo' => 'Bla bla bla',
    'altro' => 'zumzumzumzumz'
    );

    $testo = '........ {titolo} ... {altro}';
    foreach (
    $campi as $nome => $valore)
    $testo = str_replace( '{'.$nome.'}', $valore, $testo );
    Se i campi sono gia' con le graffe nell'array, str_replace puo' cambiarli tutti con una sola chiamata. Altamente consigliato.

  3. #3
    Guest

    Predefinito

    Mmm ho un testo il quale contiene {titolo} {contenuto} e che vorrei assumesse il valore delle variabili $titolo ed $contenuto.
    Il problema è che non ho un array e non posso avere i nomi della variabili.
    In breve potrei trovarmi {abcdef} al post di {titolo}...

    Mi servirebbe prendere il nome dentro le parentesi graffe agganciargli una $ e farlo diventare una variabile, il problema è farlo durante il replace...

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Doppio-dollaro $$? e' contorto pero', e rischioso.
    Codice PHP:
    $var = 3;

    $nome = "var";

    echo $
    $nome;

  5. #5
    Guest

    Predefinito

    Codice PHP:
    <?php

    $var
    = "Ciao io sono {title}";

    $title="il titolo";

    $var = ereg_replace('{(.*)}',$$.'\\1',$var);

    ?>
    Il doppio dollaro mi sa che incasina un po'...

  6. #6
    Guest

    Predefinito

    Io faccio così per il menù nel mio sito:

    Codice PHP:
    $file_content = implode('',file('menu.html')); //Prendo tutto il contenuto del file
    print eregi_replace("{MENU}", 'Menu, menu, Menu', $file_content); //Cambio {MENU} con Menu, menu, Menu.
    Dovrebbe essere quello che ti serve no?

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    beh, \\1 non e' definito quando chiami la funzione, in quanto dipende dal risultato della stessa...

    devi fare due passate, una per raccogliere tutti i {qualcosa} ed una per sostituirli con il contenuto di $qualcosa, usando li il doppio dollaro - $$nomecampo

  8. #8
    Guest

    Predefinito

    Non credo..ma grazie lo stesso per l'interesse.

    @Dreadnaut : Ci rimugino un po'..

    Risolto :
    Codice PHP:
    preg_match_all('/({\w+?})/',$data,$matches,PREG_PATTERN_ORDER);
    mi restituisce l'array con tutti gli elementi {elemento} ok perfetto! ;)
    Ultima modifica di svacant : 02-02-2009 alle ore 17.14.24

  9. #9
    Guest

    Predefinito

    Scusate se ritiro su il topic, ma vorrei sapere più precisamente come stanno le cose

    E' la stessa cosa che chiedevo nel topic: http://forum.it.altervista.org/php-m...ile-phpbb.html

    grazie in anticipo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •