- Home
- Categorie
- Coding e Sistemistica
- PHP
- PHP - TXT e lettura file
-
PHP - TXT e lettura file
Ringrazio preventivamente le risposte che riceverò.
Quello che cerco di fare lo chiesi tempo fa e trovai risposta, ora però non funziona più. Devo ottenere il contenuto di una riga di un file txt (dopo la parola clients) che è presente su un'altro server. E questo contenuto dovrà rientrare nella variabile $destinatari. In questo caso la parola destinatari dovrà essere 19.Codice PHP
[PHP]
$array=file("h**p://link/nome_file.txt");
$i=count($array)-1;
$u=0;
$destinatari="";
while ($u<=$i)
{
if (substr($array*, 0, 5) == "clients")
{
$email=explode("=", $array*);
$destinatari.=substr($email[1],0,-1)."";
}
$u=$u+1;
}[/PHP]
Testo file TXT
clients=17 clients2=<!--players-->17<!--/players--> age=1473 create=-127286033
Cosa c'è che non va?
-
Ciao the_dream,
lo script mi sembra non abbia molto senso.
A te da quel file interessa ottenere solamente 17?
-
Si solo il 17
-
Prova, più semplicemente cosi:
[php]
$file=file_get_contents("h**p://link/nome_file.txt");
$testo = explode('clients=', $file);
if(isset($testo[1]))
{
$testo = explode("\n", $testo[1]);
echo $testo[0]; // 17
}
[/php]
-
Ciao... ho provato e funziona, ma solo se il file si trova già nel mio sito... Se il file si trova su un'altro indirizzo non lo carica
Grazi comunque per l'aiuto che mi stai dando
-
Dovrebbe funzionare senza problemi anche per file su siti esterni, sicuro di aver messo l'indirizzo correttamente?
-
Non posso scriverti l'indirizzo che uso perchè non me lo permette. Ma per avere il file devo entrare nel link attaverso una porta... Esempio:
www . casa.blanca. it :8080 /casella/informazioni/grafici/nome_file.txt
-
Ah ecco, allora al posto di:
[php]
$file=file_get_contents("hp://link/nome_file.txt");
[/php]
Prova con:
[php]
$file = implode ('', file ('hp://link/nome_file.txt'));
[/php]
-
[PHP]$file = implode ('', file ('h**p://dominio:8080/hosts/public/raw_status.txt'));
$testo = explode('clients=', $file);
if(isset($testo[1]))
{
$testo = explode("\n", $testo[1]);echo $testo[0];
}
[/PHP]Questo è il codice che uso, ma nn va
-
Allora il problema è sempre stato dall'inizio che devi leggere da una porta diversa da quella di default, proviamo con la funzione fsockopen, il codice è un pò più lungo...
Supponendo di richiedere il file www.dominio.it/casella/informazioni/grafici/nome_file.txt al posto di:
[php]$file=file_get_contents("h**p://link/nome_file.txt"); [/php]
metti:
[php]
$file = '';
$fp = fsockopen("www.dominio.it", 8080, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /casella/informazioni/grafici/nome_file.txt HTTP/1.1\r\n";
$out .= "Host: www.dominio.it\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$header = '';
do{
$header .= fgets($fp, 128);
}while(strpos($header, "\r\n\r\n") === false);
while(!feof($fp)){
$file.=fgets($fp, 128);
}
fclose($fp);
}
[/php]
-
Faccio prima... ti posto l'intero codice e vedi che nn va
[PHP]$file = '';
$fp = fsockopen("artic.nsn3.net", 8080, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /hosts/nsh_dewizards/public/raw_status.txt HTTP/1.1\r\n";
$out .= "Host: artic.nsn3.net\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$header = '';
do{
$header .= fgets($fp, 128);
}while(strpos($header, "\r\n\r\n") === false);
while(!feof($fp)){
$file.=fgets($fp, 128);
}
fclose($fp);
}$testo = explode('clients=', $file);
if(isset($testo[1]))
{
$testo = explode("\n", $testo[1]);echo $testo[0];
$stringa_xml_doc = "
<?xml version="1.0" encoding="UTF-8"?>
<pie>
\t<slice title="Sevenshard">$testo[0]</slice>
\t<slice title="Once a day">300</slice>
\t<slice title="Once a week">4</slice>
\t<slice title="Once a week">4</slice>
</pie>
";$stringa_xml = $stringa_xml_doc;
$file_name = "ampie/ampie_data.xml";
$file = fopen ($file_name,"w");
$num = fwrite ($file, $stringa_xml);fclose($file);
}
[/PHP]
-
Ma se vai con il browser su: artic.nsn3.net:8080/hosts/nsh_dewizards/public/raw_status.txt il file riesci ad aprirlo?
-
Si che riesco
-
Ho appena provato in locale sul mio pc, collegandomi a quel file, e tutto funziona correttamente.
Se hai messaggi di errore dovresti incollarli, altrimenti non ho modo di aiutarti.
-
Forse la versione di php? Io usa la 5°...
-
Con la 5 non dovresti avere sicuramenti problemi, ma stai provando in locale o su un hosting?
-
Direttamente su hosting... Cmq per sicurezza ha inserito vari echo... e su quella della variabile file mi viene questa risposta:
"Destination host forbidden"
-
Potrebbe essere il provider ad impedirti la connessione esterna, puoi provare a contattarli per vedere se effettivamente c'è un blocco, perchè lo script è corretto.
-
Grazie... ora mi informo
-
Ritorno in argomento poichè a causa di un reset ho perso tutto il mio lavoro...
Il codice era questo, ma non ricordo quale era l'errore. Aiuto[PHP]$file = '';
$fp = fsockopen("artic.nsn3.net", 8080, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /hosts/nsh_dewizards/public/raw_status.txt HTTP/1.1\r\n";
$out .= "Host: artic.nsn3.net\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$header = '';
do{
$header .= fgets($fp, 128);
}while(strpos($header, "\r\n\r\n") === false);
while(!feof($fp)){
$file.=fgets($fp, 128);
}
fclose($fp);
}$testo = explode('clients=', $file);
if(isset($testo[1]))
{
$testo = explode("\n", $testo[1]);echo $testo[0];
$stringa_xml_doc = "
<?xml version="1.0" encoding="UTF-8"?>
<pie>
\t<slice title="Sevenshard">$testo[0]</slice>
\t<slice title="Once a day">300</slice>
\t<slice title="Once a week">4</slice>
\t<slice title="Once a week">4</slice>
</pie>
";$stringa_xml = $stringa_xml_doc;
$file_name = "ampie/ampie_data.xml";
$file = fopen ($file_name,"w");
$num = fwrite ($file, $stringa_xml);fclose($file);
}[/PHP]