Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[PHP] Cerca e copia tra due pagine

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[PHP] Cerca e copia tra due pagine

Postdi Michell » 04/07/11 12:31

Salve a tutti.

Ho due pagine generate da un cms.
Sto impazzendo per riuscire a copiare del testo da una pagina ad un'altra con un riferimento per l'inizio della copia....una sorta di funzione "SE" di excel. Il brutto è che non so neanche se è possibile farlo!
Provo a spiegarmi meglio.
Contenuto della Pagina1:
Codice: Seleziona tutto
Testo1:<!-- inizio -->testo, testo, testo, testo, testo, testo, testo, testo, testo, testo, testo.<!-- fine --> <br />
Testo2 <!-- inizio -->testo, testo, testo, testo, testo, testo, testo, testo, testo, testo, testo, testo.<!-- fine -->


Pagina2
In questa pagina ho bisogno di una funzione che cerchi all'interno della Pagina1 la parola "Testo1" e ricopi il testo contenuto contenuto nei delimitatori "<!-- inizio -->(.*)<!-- fine -->" senza però andare a copiare anche il testo nella riga di "Testo2"

Al momento ho questo codice:
Codice: Seleziona tutto
<?php
$website = implode("", file("/pagina1"));

if (eregi("<!-- inizio -->(.*)<!-- fine -->", $website, $output) == TRUE)
{
      echo $output[1];
}
?>


e funziona anche!
Se non fosse per il fatto che mi copia tutto quello che che è contenuto nei delimitatori "<!-- inizio -->(.*)<!-- fine -->" dell'intera pagina.
Purtroppo per la ricerca non sono riuscito a trovare nulla.

Grazie a chi mi darà un aiutino.

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04

Sponsor
 

Postdi archimede » 04/07/11 12:53

Mai usato quella roba in PHP, ma che succede se fai
Codice: Seleziona tutto
if (eregi("Testo1:<!-- inizio -->(.*)<!-- fine --> <br />", $website, $output) == TRUE)
?

HTH.

Alessandro

PS: pare che sia raccomandato l'uso di PCRE al posto di eregi.
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP] Cerca e copia tra due pagine

Postdi Michell » 04/07/11 13:19

Grazie mille per il tuo intervento archimede.
Ho provato a sostituire il rigo della mia formula, ma come risultato ho una pagina bianca.
Ho provato questa:
Codice: Seleziona tutto
<?php $website = implode("", file("link alla pagina"));

if (preg_filter("Testo1:<!-- inizio -->(.*)<!-- fine --> <br />", $website, $output) == TRUE)
{
      echo $output[1];
}
?>

ma mi restituisce un errore alla riga 12
Codice: Seleziona tutto
Fatal error: Call to undefined function preg_filter() in ......../public_html/cerca_copia.php on line 12


Sono andato sul sito PHP......ma mi sono perso!

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04

Postdi archimede » 04/07/11 13:44

Michell ha scritto:Sono andato sul sito PHP......ma mi sono perso!
Allora modifica quello che già ti funziona. Più che altro te l'ho segnalato come alternativa.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi archimede » 04/07/11 13:58

Un altro tentativo potrebbe essere questo:
Codice: Seleziona tutto
if (eregi("<!-- inizio -->(.*?)<!-- fine -->", $website, $output) == TRUE)
HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP] Cerca e copia tra due pagine

Postdi Michell » 04/07/11 13:59

Ho provato quella che mi hai consigliato:
Codice: Seleziona tutto
<?php $website = implode("", file("pagina1"));

if (eregi("Testo1:<!-- inizio -->(.*)<!-- fine --> <br />", $website, $output) == TRUE)
{
      echo $output[1];
}
?>

ma mi restituisce una pagina bianca!

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04

Postdi archimede » 04/07/11 14:11

Non sono un esperto di PHP ma credo che gli array inizino da 0, quindi:
Codice: Seleziona tutto
      echo $output[0];
Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP] Cerca e copia tra due pagine

Postdi Michell » 04/07/11 14:11

Nulla da fare

Codice: Seleziona tutto
Warning: eregi() [function.eregi]: REG_BADRPT in .......


Non so cosa sarebbe dovuto succedere sostituendo "0" a "1", ma non è cambiato nulla

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04

Postdi archimede » 04/07/11 14:45

Michell ha scritto:Non so cosa sarebbe dovuto succedere sostituendo "0" a "1", ma non è cambiato nulla
La sostituzione (che comunque è valida in linea generale) intendevo andasse fatta nello script che ti torna pagina bianca, non in quello che ti dà errore.

L'errore credo significhi che quella sintassi di regexp non è supportata da eregi. Prova
Codice: Seleziona tutto
if (eregi("<!-- inizio -->([^<]+)<!-- fine -->", $website, $output) == TRUE)
{
      echo $output[0];
}
HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi Michell » 04/07/11 14:59

archimede ha scritto:
Michell ha scritto:Non so cosa sarebbe dovuto succedere sostituendo "0" a "1", ma non è cambiato nulla
La sostituzione (che comunque è valida in linea generale) intendevo andasse fatta nello script che ti torna pagina bianca, non in quello che ti dà errore.

L'errore credo significhi che quella sintassi di regexp non è supportata da eregi. Prova
Codice: Seleziona tutto
if (eregi("<!-- inizio -->([^<]+)<!-- fine -->", $website, $output) == TRUE)
{
      echo $output[0];
}
HTH.

Alessandro


Ho appena provato questa funzione e..tadaaaaaa...mi ricopia solo il primo testo incluso nei delimitatori che trova.
Grazie mille Alessandro.

Adesso rimane il problema della ricerca....

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04

Postdi archimede » 04/07/11 15:06

Michell ha scritto:Adesso rimane il problema della ricerca....
Cioè?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP] Cerca e copia tra due pagine

Postdi Michell » 04/07/11 15:13

Michell ha scritto:Salve a tutti.

Ho due pagine generate da un cms.
Sto impazzendo per riuscire a copiare del testo da una pagina ad un'altra con un riferimento per l'inizio della copia....una sorta di funzione "SE" di excel. Il brutto è che non so neanche se è possibile farlo!
Provo a spiegarmi meglio.
Contenuto della Pagina1:
Codice: Seleziona tutto
Testo1:<!-- inizio -->testo, testo, testo, testo, testo, testo, testo, testo, testo, testo, testo.<!-- fine --> <br />
Testo2 <!-- inizio -->testo, testo, testo, testo, testo, testo, testo, testo, testo, testo, testo, testo.<!-- fine -->


Pagina2
In questa pagina ho bisogno di una funzione che cerchi all'interno della Pagina1 la parola "Testo1" e ricopi il testo contenuto contenuto nei delimitatori "<!-- inizio -->(.*)<!-- fine -->" senza però andare a copiare anche il testo nella riga di "Testo2"

Al momento ho questo codice:
Codice: Seleziona tutto
<?php
$website = implode("", file("/pagina1"));

if (eregi("<!-- inizio -->(.*)<!-- fine -->", $website, $output) == TRUE)
{
      echo $output[1];
}
?>


e funziona anche!
Se non fosse per il fatto che mi copia tutto quello che che è contenuto nei delimitatori "<!-- inizio -->(.*)<!-- fine -->" dell'intera pagina.
Purtroppo per la ricerca non sono riuscito a trovare nulla.

Grazie a chi mi darà un aiutino.

Michell


Testo1 è un esempio poiché la pagina Pagina2 è una pagina comune a più siti e la parola "Testo1" diventa "Test2" o "Testo3" in base al sito che stai visitando.

"Testo1" è generato automaticamente in base al sito e corrisponde al nome sito

So che è un po contorto e spero di essere riuscito a spiegarmi!

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04

Postdi archimede » 04/07/11 15:24

Dubito di aver capito, ma ci provo lo stesso: non basta che metti il testo che vuoi dentro all'istruzione eregi? Esempio:
Codice: Seleziona tutto
if (eregi("Testo1:<!-- inizio -->([^<]+)<!-- fine -->", $website, $output) == TRUE)
{
      echo $output[0];
}
Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP] Cerca e copia tra due pagine

Postdi Michell » 04/07/11 15:53

Provo a farmi capire meglio.
Il cms che uso mi permette di creare un multi sito mantenendo lo stesso DB e cambiando solo il template grafico.
Tutte le pagine che creo posso farle vedere su tutti i siti o su un singolo sito.
Onde evitare di creare centinaia di pagine sto cercando, il più possibile e sempre se possibile, di far comparire determinate parole (come nel caso del nome del sito) con le funzioni php.
In questo modo una singola pagina è valida per tutti i siti e non devo duplicarla per tutti i siti solo per cambiare una parola (come nel caso del nome sito).

Spiegarti a cosa mi serve nello specifico la funzione che stiamo cercando di ottenere mi si rende molto difficile, ma ci provo sperando in un buon esito.

Ogni sito si occupa di una cosa in particola e queste "specializzazioni" sono scritte e raggruppate in una singola pagina (presente nel sito principale e che chiameremo Pagina1) nella forma:
- Sito1: bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
- Sito3: bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
- Sito4: bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
- Sito5: bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla

Poi ho creato una pagina (ossia Pagina2), visibile su tutti i siti, in cui sono specificate le singole specializzazioni per il singolo sito.

Arrivati a questo punto le cose sono due.....o la funzione che mi va a cercare il nome sito e mi ricopia tutto quello dopo i due punti (incluso nei delimitatori <!-- inizio --> <!-- fine --> ) oppure creo tante pagine quanti sono i siti (e non sono pochi) in cui vado a scrivere a mano le "specializzazioni".

Per quanto riguarda l'inserire "Testo1" nella funzione eregi....purtroppo mi restituisce pagina bianca....come se non trovasse il testo a cui fare riferimento! Che vada incluso anche esso in delimitatori?

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04

Postdi archimede » 04/07/11 16:07

A occhio mi pare che non dovrebbe essere necessario tutto questo casino per gestire un multisite con un CMS (di quale si tratta?) ma non ne so abbastanza mi sa.
Michell ha scritto:Per quanto riguarda l'inserire "Testo1" nella funzione eregi....purtroppo mi restituisce pagina bianca....come se non trovasse il testo a cui fare riferimento!
Se ho ben capito "Testo1" è una stringa fittizia: un esempio reale?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP] Cerca e copia tra due pagine

Postdi Michell » 04/07/11 16:29

Il cms è magento e Testo1 (nella Pagina1) non è una stringa fittizia ma una parola digitata a mano :lol:

La stringa fittizia che genera Testo1 è nella Pagina2 ed è {{config path="/name"}} che genera il nome del sito.

Ancora grazie mille per la disponibilità

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04

Re: [PHP] Cerca e copia tra due pagine

Postdi Michell » 05/07/11 21:09

Sono riuscito nel mio intento grazie all'aiuto di un programmatore php che conosce bene magento.
Purtroppo non ho idea di dove sia il file da lui creato per poter ricopiare il codice nel caso in cui servisse a qualcun'altro.

Mi spiace.

Grazie mille Alessandro per la disponibilità e l'aiuto

Michell
Michell
Utente Junior
 
Post: 19
Iscritto il: 17/11/05 20:04


Torna a Programmazione


Topic correlati a "[PHP] Cerca e copia tra due pagine":


Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti