Importare e troncare una stringa da url

  • Creatore Discussione leonte54
  • Data di inizio
L

leonte54

Guest
Salve, importo da url una stringa con questo codice:
PHP:
$url = fopen("http://sitename.org/reader.php?date=".date('Ymd')."&type=saint&lang=".$lang,"r");
while (!feof($url))	$santo .= fgets($url);

e fin qui non ho problemi.

Vorrei troncare la stringa importata, ma se inserisco il codice:
PHP:
substr($url,0,strpos($url,'), ')+1);

non vedo più la stringa.

Mentre se al posto dell'url inserisco una stringa non importata il secondo codice funziona.
Grazie per l'aiuto e le eventuali spiegazioni
 
L

leonte54

Guest
infatti, il codice completo è:
PHP:
$url = fopen("http://sitename.org/reader.php?date=".date('Ymd')."&type=saint&lang=".$lang,"r");
while (!feof($url))	$santo .= fgets($url);
$santo1 = substr($santo,0,strpos($santo,'), ')+1);
ma non funziona, praticamente il codice di troncatura non mi visualizza la stringa, mentre se al posto dell'url importato utilizzo una stringa normale la troncatura funziona.

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
allora verifica tutti i passaggi dividendo anche le istruzioni
PHP:
<?php
$url = fopen("http://sitename.org/reader.php?date=".date('Ymd')."&type=saint&lang=".$lang,"r");
echo "<pre>";
var_dump($url);//verifichi che ti apra
while (!feof($url))    $santo .= fgets($url);
var_dump($santo);//verifichi che legga la stringa
//qui dividi le istruzioni
$s=strpos($santo,'), ');
var_dump($s);//e verifichi che trovi la substringa
$santo1 = substr($santo,0,$s+1);
var_dump($santo1);
echo "</pre>";
?>
facendo così dovresti capire da quanto ti restituiscono i vari var_dump dove si inghippa, eventualmente posta i risultati
poi i pre e i var_dump li togli
 
L

leonte54

Guest
Grazie per l'aiuto.

Ho provato con i var_dump e ho ottenuto i seguenti risultati:
PHP:
$url = fopen("http://sitename.org/reader.php?date=".date('Ymd')."&type=saint&lang=".$lang,"r"); 
echo "<pre>"; 
var_dump($url);//verifichi che ti apra 
/* risultato = resource(228) of type (stream) */

while (!feof($url))    $santo .= fgets($url); 
var_dump($santo);//verifichi che legga la stringa
/* risultato = resource(228) of type (stream)
string(495) "
B. Augusto Czartoryski, sacerdote S.D.B. (1858-1893),  S. Dionigi, vescovo di Alessandria di Egitto (� 264)" */

//qui dividi le istruzioni 
$s=strpos($santo,'), '); 
var_dump($s);//e verifichi che trovi la substringa 
/* risultato = resource(228) of type (stream)
string(495) "
B. Augusto Czartoryski, sacerdote S.D.B. (1858-1893),  S. Dionigi, vescovo di Alessandria di Egitto (� 264)"
bool(false) */

$santo1 = substr($santo,0,$s+1); 
var_dump($santo1);
/* risultato = resource(228) of type (stream)
string(495) "
B. Augusto Czartoryski, sacerdote S.D.B. (1858-1893),  S. Dionigi, vescovo di Alessandria di Egitto (� 264)"
bool(false)
string(1) "
" */

echo "</pre>";

sembrerebbe che non accetti il strpos con l'url, perchè se la stessa stringa la posiziono al posto del fopen mi legge la sequenza dei caratteri da dove voglio troncare.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non mi torna questo risultato
PHP:
<?php
//.....
$s=strpos($santo,'), '); 
var_dump($s);//e verifichi che trovi la substringa 
/* risultato = resource(228) of type (stream)
string(495) "
B. Augusto Czartoryski, sacerdote S.D.B. (1858-1893),  S. Dionigi, vescovo di Alessandria di Egitto (� 264)"
bool(false) */ 
//...
?>
$s dovrebbe essere un numero intero, sei sicuro che quello sia l'out del var_dump?
 
L

leonte54

Guest
Ho scoperto che nel strpos al posto di < '), ' > inserisco 1893 tutto funziona.
Il problema inizia quando metto )
 
L

leonte54

Guest
Ciao,
ho provato anche con il backslash, ho letto le istruzioni su manuale php: http://www.php.net/manual/it/regexp.reference.escape.php
ma non riesco a venirne a capo.

Per esempio la stringa di oggi è:
S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625), S. Maddalena di Canossa, vergine e fondatrice (1774-1835)

se utilizzo questo codice:
PHP:
substr($santo,0,strpos($santo,'1625)')+6);

ottengo:
S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625)<

Non capisco perché al posto della virgola mi mette il simbolo del minore <. Inoltre ottengo un float indesiderato nel template.

Mentre con questo codice:
PHP:
substr($santo,0,strpos($santo,'5)')+6);

ottengo:
S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625) senza float indesiderato ma non tornano i conti, 5)+6 dovrebbe darmi 5), S
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho provato, e funziona, non capisco dove stai sbagliando
PHP:
<?php
echo "<pre>";
$santo="S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625), S. Maddalena di Canossa, vergine e fondatrice (1774-1835)";
var_dump($santo);
$s=strpos($santo,"), ");
var_dump($s);
$santo1 = substr($santo,0,$s+1);
var_dump($santo1);
echo "<pre>";
?>
e questo è l'output
string(113) "S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625), S. Maddalena di Canossa, vergine e fondatrice (1774-1835)"
int(53)
string(54) "S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625)"

altimenti puoi provare a cambiare metodo, es
PHP:
<?php
echo "<pre>";
$santo="S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625), S. Maddalena di Canossa, vergine e fondatrice (1774-1835)";
var_dump($santo);
$santo1=explode("), ",$santo);
var_dump($santo1);
$santo1[0]=$santo1[0].")";
var_dump($santo1[0]);
echo "<pre>";
?>
con l'output
string(113) "S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625), S. Maddalena di Canossa, vergine e fondatrice (1774-1835)"
array(2) {
[0]=>
string(53) "S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625"
[1]=>
string(57) "S. Maddalena di Canossa, vergine e fondatrice (1774-1835)"
}
string(54) "S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625)"
il risultato finale è lo stesso
 
L

leonte54

Guest
Ciao voglio comunque ringraziarti per il tempo che mi stai dedicando.

Lo so che da stringa funziona, infatti se ripercorri i post l'avevo già evidenziato.

Il problema si verifica da url:

PHP:
$santo= fopen("http://feed.evangelizo.org/reader.php?date=".date('Ymd')."&type=saint&lang=".$lang,"r");

e l'unico punto in comune dei santi del giorno è proprio la sequenza '), '
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
sei sicuro della stringa
S. Miguel de los Santos, sacerdote O.SS.T. (1591-1625), S. Maddalena di Canossa, vergine e fondatrice (1774-1835)
non è che per caso ci sia qualche tag html?
fai il var_dump o usa echo sulla stringa completa poi vai a vedere con visualizza sorgente del browser se ci sono caratteri strani o tag html
 
L

leonte54

Guest
Grazie,
il problema era proprio l'HTML, quindi con questo codice funziona perfettamente.

$s=strpos($santo,')</a>,&nbsp;');
$santo1 = substr($santo,0,$s+5);
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
secondo me è meglio toglierli i tag, prova così
PHP:
<?php
//.....
$santo=strip_tags($santo);//elimini tutti i tag
s=strpos($santo,'),&nbsp;');
$santo1 = substr($santo,0,$s+5); 
//....
?>
 
L

leonte54

Guest
Ho provato senza tag ma non funziona, con i tag funziona anche il link, questo è il codice sorgente funzionante.

<span id="saints">
<font style="align-text:left" dir="ltr"><a href="#" onclick="window.open('http://evangelizo.org/popup-saints.php?language=IT&id=2017&fd=0', '', 'width=500,height=450,top=120,left=120,scrollbars=yes')">S. Giovanni di Montemarano, vescovo († 1095)</a></span>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, scusate se mi intrometto ma non riesco a capire esattamente quale risultato devi ottenere,
comunque ti consiglio di usare la funzione di php file_get_contents()
PHP:
<?php

$lang = 'IT';
$html = file_get_contents("http://feed.evangelizo.org/reader.php?date=" . date('Ymd') . "&type=saint&lang=" . $lang);
$result = explode(",&nbsp;&nbsp;", $html);
foreach ($result as $value) {
    echo $value . "<br/>";
}
?>
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
felino Importare VHS: video in bianco e nero Discussioni Varie 6
A Importare array in mysql PHP 1
Valerio93 Importare database senza backup MySQL 0
R [MySQL] importare tabella cvs MySQL 0
camilia come importare thunderbird in Outlook Windows e Software 1
F [PHP] Importare file CSV in HTML PHP 12
M Importare - Manipolare Json Array Sviluppo app per Android 2
N [MySQL] Importare un database da MAMP a Remoto MySQL 4
M [PHP] Importare file csv su server PHP 0
W [WooCommerce] importare Prodotti suddivisi con: Categorie, Prodotti, Attributi E-Commerce 6
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
F [PHP] Importare file CSV in HTML PHP 3
L [Wordpress][HTML]Importare articoli o progetti in pagina html WordPress 0
A [WordPress] Importare immagini in post WordPress 2
G Importare database dentro un contenitore (docker) wordpress Programmazione 1
S importare testi da file esterno a grafica photoshop Photoshop 0
alessandra86 Importare un xlsx in un database Mysql PHP 2
O importare file csv mysql PHP 3
G importare database mysql dentro un contenitore (docker) PHP 6
Laskot [Javascript] Importare file JSON in local storage Javascript 2
utente importare css da pagina html HTML e CSS 1
Primian Importare dati su tabella MySQL MySQL 3
felino Importare i post di Facebook tra gli articoli di Wordpress WordPress 0
booklisa Tema Wordpress importare da demo CMS (Content Management System) 3
B IMPORTARE FILE .FRM E .IBD CON PHPMYADMIN MySQL 0
E Importare codice html da una pagina tramite php PHP 9
N come importare da dbf a mysql? MySQL 2
P Importare dati da Tessera Sanitaria CNS Programmazione 25
D Importare dati da più files excel in access MS Access 3
asevenx Importare file excel in database mysql PHP 3
L Importare post multipli in wp WordPress 5
G Cerco script per importare file .xml e .csv. Lavoro retribuito Offerte e Richieste di Lavoro e/o Collaborazione 2
G Importare dati da file csv PHP 0
neo996sps [PHP] Importare immagini in pagina PHP 0
otto9due importare file .php tramite .load dove sbaglio?? jQuery 2
C Importare file XML Javascript 1
M Importare correttamente in tabella file CSv con doppi apici MySQL 4
M Importare pagine database pubblico in foglio di calcolo OpenOffice Windows e Software 0
M Importare dati Xml in un file txt PHP 0
ivarello Importare CSV e compilare le giuste tabelle PHP 2
L importare dati xml a mysql PHP 29
M CSV to MySQL - importare da csv in MySQL MySQL 3
E Importare valori da una tabella MySQL in una tabella con checkbox PHP 4
G Importare file txt in word Windows e Software 2
D errore 1064 nell'importare txt MySQL 1
A [php]Importare contatti PHP 2
G importare csv file in tabella oracle XE da script php PHP 1
B Wordpress: importare blog da feed rss WordPress 3
A Importare un database In Joomla Joomla 5
I Importare csv PHP 3

Discussioni simili