Visualizzazione risultati 1 fino 12 di 12

Discussione: [PHP] Cerco (se esiste) una funzione SIMILE a "require" che...

  1. #1
    Guest

    Exclamation [PHP] Cerco (se esiste) una funzione SIMILE a "require" che...

    ragazzi, essendo poco esperto nel campo del web design mi affido alle vostre mani... cerco (se esiste) una funzione SIMILE a "require" che non prenda tutto il contenuto del file...

    perciò facciamo caso devo mettere nella pagina "home.php" il contenuto della pagina "fileinquestione.php" dovrò mettere nella pagina "home.php" il codice seguente:

    <? include("fileinquestione.php"); ?>
    e se di "fileinquestione.php" volessi prendere solo un pezzetto? Magari il pezzo compreso fra i tag <h1></h1> o il contenuto di un tag input di un form?
    Non so se abbiate capito ciò che intendo...

    grazie comunque a tutti quanti
    Ultima modifica di lasvegasmusic : 06-09-2008 alle ore 17.17.47

  2. #2
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Non esiste una funzione simile, devi costruirla tu.
    Per far ciò puoi usare l'output buffering per prendere l'output del file php e inserirlo in una variabile stringa sul quale effettuare tutte le operazioni desiderate; nel tuo caso dovresti usare le espressioni regolari per prendere il contenuto tra due delimitatori.
    Codice PHP:
    ob_start(); //attivo l'output buffering
    include 'quellochetipare.php'; //includo lo script
    $buffer = ob_get_contents(); // metto in $buffer l'output
    ob_end_clean(); //disattivo l'output buffering
    // ora in $buffer ho l'output del file quellochetipare.php e posso svolgere tutte le operazioni che voglio, come con una normale stringa.
    Ciao!
    Ultima modifica di programmazioned : 08-09-2008 alle ore 22.18.24

  3. #3
    Guest

    Predefinito

    Perdona la mia totale ignoranza ma come metto in $buffer l'output...? di Php non capisco un tubo!

  4. #4
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Ti ho fatto pure l'esempio!
    Ultima modifica di programmazioned : 08-09-2008 alle ore 22.18.20

  5. #5
    Guest

    Predefinito

    Scusami probid, ma così lui cosa conclude??..non ho capito neppure io! XD
    Ciao! ^^

  6. #6
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito


    Lui vuole includere solo un pezzo dello script, racchiuso tra due delimitatori.
    Lo script sopra include il file, lo interpreta e ne prende l'output, mettendolo in $buffer.
    Poi lui può svolgere tutte le operazioni che vuole su quest'ultima variabile.
    Basta usare le regexp per prendere una parte dell'output tra due delimitori.
    Capisco che possano essere funzioni un pochino complicate per chi non conosce abbastanza bene il php, ma ho postato anche un esempio basilare...
    Meglio di cosi non so spiegarvi...leggete, ragionate, studiate e capirete.
    Ciao!
    Ultima modifica di programmazioned : 08-09-2008 alle ore 22.18.17

  7. #7
    Guest

    Predefinito

    Allora... dimmi se ho capito bene... nella pagine dove voglio mettere "quella cosa" devo mettere il codice che mi hai scritto...

    ob_start(); //attivo l'output buffering
    include 'quellochetipare.php'; //includo lo script
    $buffer = ob_get_contents(); // metto in $buffer l'output
    ob_end_clean(); //disattivo l'output buffering
    Esatto? Ma nella pagina dove c'è "quella cosa" che devo fare?

    Supponiamo che questa sia la pagina dove c'è "quella cosa"...

    <html>
    <body>
    <h1> Titolo </h1>
    <p> Testo 123456 </p>
    </body>
    </html>
    e volessi prendere da questa pagina il testo compreso fra i tag <p></p>... cosa devo fare? grazie per la tua pazienza...

  8. #8
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Al posto di quellochetipare.php devi mettere la pagina da includere.
    Per prendere il testo tra due delimitatori usa le espressioni regolari utilizzando $buffer come stringa "campione" (devi studiarle, link sopra).

    P.S: So che gli avrei potuto semplicemente suggerire file_get_contents() vedendo l'ultimo post, ma dal primo sembrava volesse includere uno script php e ora non mi pare il caso di confondere ulteriormente le idee...
    Ultima modifica di programmazioned : 08-09-2008 alle ore 22.18.13

  9. #9
    Guest

    Predefinito

    Puoi tranquillamente suggerirmelo se non chiedo troppo... tanto non ci riesco... :) Forse mi sono spiegato male io prima...
    P.S. Sempre se non ti disturba!

  10. #10
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Nessun disturbo, figurati.
    Anzi mi spiace e mi scuso se magari sono stato un'pò troppo "scortese" :)
    Codice PHP:
    $var = file_get_contents('fileinquestione.php'); //metto il contenuto di fileinquestione.php nella variabile $var
    echo $var; // stampo $var
    Come puoi vedere eseguendo le righe di codice sopra, la funzione file_get_contents() prende il contenuto di un file (in questo caso fileinquestione.php) sottoforma di stringa.

    L'echo è solo per farti capire quale sia il valore tornato della funzione, stampandolo a video :)

    Ora, puoi fare tutte le operazioni che vuoi su $var, tra cui la ricerca di un testo compreso tra due tag.

    Per quest'ultima operazione, vengono in aiuto le più volte menzionate espressioni regolari, che permettono di ricercare in una stringa (in questo caso $var) un determinato set di caratteri secondo delle regole specificate (tra le altre cose).

    Qui puoi trovare un tutorial pratico molto chiaro su quest'ultimo argomento.

    Prova a leggerlo, e a vedere se riesci a capire come applicare quelle regole al tuo caso specifico.

    Se non dovessi riuscirci, siamo qui :)

    Ciao!
    Ultima modifica di programmazioned : 08-09-2008 alle ore 22.18.09

  11. #11
    Guest

    Predefinito

    Quindi lui dovrebbe fare così?:
    fileprende.php
    Codice PHP:
    ob_start(); //attivo l'output buffering
    include 'quellochetipare.php'; //includo lo script
    $testo = ob_get_contents(); // metto in $buffer l'output
    ob_end_clean(); //disattivo l'output buffering
    quellochetipare.php
    Codice PHP:
    <html>
    <head>
    <title><?php $buffer = "Titolo"; echo $titolo; ?></title>
    </head>
    </html>
    Ciao! ^^

  12. #12
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    no.
    In quellochetipare.php ha per esempio:

    <html>
    <head>
    <title>ciao</title>
    </head>
    </html>
    lui vuole prendere quel ciao.

    Per farlo gli basta usare le espressioni regolari per estrarre il testo tra i tag title preso con file_get_contents().

    --------------------------


    La prima soluzione, quella con l'output buffering, era per fare lo stesso se quellochetipare.php avesse contenuto del codice php da interpretare (ma abbiamo scoperto che non è così).

    Per esempio:

    quellochetipare.php

    <title><? echo 'ciao'; ?></title>
    avrebbe preso "ciao".
    Ultima modifica di programmazioned : 08-09-2008 alle ore 22.17.37

Regole di scrittura

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