Newsgroup: it.comp.www.php
Titolo: Manipolare dato provenienta da chiamata Curl

Permessa doverosa: non sono un pro, lo faccio per hobby e non ci sono 
guadagni per nessuno e di nessun tipo dietro questo script. ;)
 
Sto cercando di far funzionare uno script che elabori un dato in entrata.
 
Tramite funzione php viene passato, via metodo Curl, una variabile.
 
Lo script di partenza � il seguente:
 
$path_di_partenza = 
"http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
 
$esito = InfoData("
http://www.urldelloscriptdiarrivo.com/script.php
", 
"nome=" . $nome. "&path_di_partenza =" . $path_di_partenza);
 
function InfoData($url, $curl_data) {
...
...
...
}
 
 
 
Lo script, nel file di arrivo chiamata, dovrebbe manipolare la varibile 
$path_di_partenza e restituirmi alcuni dati.
 
Per intenderci se la chiamata viene da: 
www.miosito.it/sito1/filechelancialafunzionecurl.php
 
 
Mi dovrebbe dare dare:
 
1) Il nome del dominio dal quale � partito (= 
miosito.it
)
2) Il percorso completo dal quale � partita la chiamata curl (= 
miosito.it/sito1
)
3) Il nome del file che ha eseguito la chiamata curl (= 
filelancialafunzionecurl.php)
 
Ora, ho provato a fare quanto sopra ma il mio codice fa acqua da diverse 
parti (cio�, andando poi ad archiviare i valori 1) 2) 3) in un db mi accordo 
che ho dei doppioni, dei dati "simili", perch� ho "parsato" male la 
variabile in entrata o forse ho impostato male la $path_di_partenza).
 
Questo � il mio "codice" (lo so � una zozzeria):
 
$regexp = "#([^/]+)/.*#";
$regexp2 = "#http+([^http]+)/.*#";
$url = parse_url($_POST['path_di_partenza']);
$urlPath = preg_replace($regexp, "\\1", $url['path']);
$conta_slash = substr_count($url['path'], "/");
if($conta_slash == 1) $urlPath = "";
$hostWWW = strpos($url['host'], "www.");
$host = $url['host'];
if($hostWWW !== false) $host = str_replace("www.", "", $host);
$urlSito = $host.$urlPath;
$hostHHTP = strpos($urlSito , "http//");
if($hostHHTP !== false) $urlSito = preg_replace($regexp2, "\\2", $urlSito);
 
Grazie in anticipo per qualsiasi consiglio. 
 
 

if($hostHHTP !== false) $urlSito = preg_replace($regexp2, "\\2", $urlSito);
 
Due consigli te li do subito: "hostHTTP" e non "hostHHTP"; e poi, $regexp2
contiene una sola parentesi, quindi \\2 a cosa si riferisce?
 
Terzo consiglio, "http+([^http]+)/.*" che vuol dire? Il + dopo la p prende
solo la p, quindi http+ matcha http, httpp, httppppp... non credo, che sia
questo quello che vuoi. Ancora, "[^http]" vuole dire "un carattere che non
e' h, e non e' t, ma davvero non e' t, e non e' neanche p". Quindi e' vero
che "http" non matcha, ma neanche "pth" matcha.
 
Se vuoi parsare l'URL, c'e' gia' la funzione parse_url (o url_parse? Boh),
che lo fa.
 
Leonardo
 
-- 
Were I Glenallan's Earl this tide, and were you Roland Cheyne,
My spur would be in my horse's side, the bridle upon his mane.
If they hae twenty thousand blades and we twice ten times ten,
Yet they hae but their tartan plaids, and we're mail-clad men.

 Boh), che lo fa. 
 
In effetti la uso gi� ed � la prima operazione che fatto (3a riga) ma 
non era sufficiente
ecco perch� quelle fantasiose quanto "errate" (da quello che mi dici) 
regexp. :(