-
Estrarre dominio
Salve.
parto subito dandovi il codice:
Codice PHP:
<?php
$link = array("http://www.sito.com/?f=BW","http://www.sito2.com/?t=BH8");
/*inizio codice per estrarre dominio*/
$url = $link;
foreach ($url as $value) {
$no_http = str_replace("http://", "", $value);
$no_www = str_replace("www.", "", $no_http);
$exp_url = explode("/", $no_www);
$dominio = ucfirst($exp_url[0]);
echo $dominio. '<br />';
};
/*fine codice per estrarre dominio*/
?>
Risultato: http://bollywood2.altervista.org/link.php
il codice funziona perfettamente, ma quello che voglio realizare e di estrarre il dominio sotto forma di link.
Quello che vorrei ottenere:
http://bollywood2.altervista.org/link.html
Ho provato a far partire 2 cilci separati per risolvere il problema ma e stato completamente inutile, quindi sapete come posso risolvere il problema??
Grazie in anticipo.
-
così complesso...!
puoi usare la funzione parse_url() http://php.net/manual/en/function.parse-url.php
per semplificarti il lavoro....
-
Grazie per aver risposto.
Ho provato con quella funzione ma mi esce fuori un caos.
puoi vedere come fare?
Grazie ancora.
-
guarda se è quello che vuoi fare tu:
Codice PHP:
<?
$links = array("http://www.sito.com/?f=BW","http://www.sito2.com/?t=BH8");
/*inizio codice per estrarre dominio*/
foreach ($links as $link) {
//2 variabili separate:
//$dominio_www=parse_url($link, PHP_URL_HOST);//estrae il dominio(compreso www. se presente)
//$dominio_no_www = str_replace("www.", "", $dominio_www);//sostituisce www. se presente
//oppure più semplice:
$dominio_no_www = str_replace("www.", "", parse_url($link, PHP_URL_HOST));
echo "<a href='$link'>$dominio_no_www</a><br />";
}
/*fine codice per estrarre dominio*/
?>
-
Grande "EuroSalute", funziona perfettamente, grazie 1000 :):)
--------------------------------------------------------------------------------------------------------------------
piccolo problema mi sono reso conto che funziona solo su server microsoft(aruba) invece sui server di altervista(linux) non và :(:(
mi visualizza solo una pagina bianca, forse non e standard, come si può fare per risovere questo problema?
ho usato questo codice su entrambbi i server:
Codice PHP:
<?php
$link_part = array("http://www.world.com");
foreach ($link_part as $link) {
$dominio_no_www = str_replace("www.", "", parse_url($link, PHP_URL_HOST));
echo $dominio_no_www;
}
?>
Server microsoft: http://www.apkacinema.com/j.php
Server altervista: http://bollywood2.altervista.org/j.php
-
impossibile, ho provato il tuo stesso codice qui sul mio host AV e funziona perfettamente....
prova ad inserire questo codice all'inizio:
Codice PHP:
<?php
//visualizza gli errori:
error_reporting(E_ALL);
$link_part = array("http://www.world.com");
foreach ($link_part as $link) {
$dominio_no_www = str_replace("www.", "", parse_url($link, PHP_URL_HOST));
echo $dominio_no_www;
}
?>
-
mi da questo errore:
Notice: Use of undefined constant PHP_URL_HOST - assumed 'PHP_URL_HOST' in /membri/bollywood2/j.php on line 8
Warning: parse_url() expects exactly 1 parameter, 2 given in /membri/bollywood2/j.php on line 8
-
Hai attivato php5?
Codice:
Changelog
Version Description
5.1.2 Added the component parameter.
Devi attivare php5: http://forum.it.altervista.org/710811-post4.html
-
Mi scuso per il ritardo nel rispondere.
Ok funziona attivando php5
Grazie..:)
EDIT:
Un altra domanda:
Codice PHP:
<?php
$link_part = array('http://www.sito.com','http://www.sito2.com');
$link_part_2 = array('http://www.web.com','http://www.web2.com');
$link_part_3 = array('http://www.link.com','http://www.link2.com');
//...e via così
//codice per estrarre dominio
$link_part_0 = array($link_part[0]);
foreach ($link_part_0 as $link) {
$dominio_no_www = str_replace("www.", "", parse_url($link, PHP_URL_HOST));
$dominio_no_www_uc = ucfirst($dominio_no_www);
echo "$dominio_no_www_uc:";
};
//fine codice per estrarre dominio
for ($i=0; $i<count($link_part); $i++)
echo " <a href = $link_part[$i]>Part($i)</a> -";
?>
Risultato: http://bollywood2.altervista.org/qqq.php
Il codice funziona perfettamente, ma quello che vorrei ottenere, è lo stesso risulato per ogni array ($link_part_2, $link_part_3, ...), senza dover ripetere ogni volta l'interro codice, e se per caso un giorno aggiungessi un nuovo array (Es: $link_part_8), questo mi elaborasse anche quest'ultimo array automaticamente.
Quello che vorrei ottenere: http://bollywood2.altervista.org/qqq.html
Qualche genio saprebbe come fare?, è se non e possibile farlo avete qualche soluzione altrenativa?
Grazie in anticipo.
-
Per non ripetere ogni volta l'intero codice, hanno inventato le funzioni.
Una cosa del genere:
Codice PHP:
function estrai_dominio($array)
{
$array_0 = array($array[0]);
foreach ($array_0 as $link) {
$dominio_no_www = str_replace("www.", "", parse_url($link, PHP_URL_HOST));
$dominio_no_www_uc = ucfirst($dominio_no_www);
echo "$dominio_no_www_uc:";
for ($i=0; $i<count($array); $i++)
echo " <a href = $array[$i]>Part($i)</a> -";
}
...poi la richiami in questo modo:
Codice PHP:
$link_part = array('http://www.sito.com','http://www.sito2.com');
$link_part_2 = array('http://www.web.com','http://www.web2.com');
$link_part_3 = array('http://www.link.com','http://www.link2.com');
estrai_dominio($link_part);
estrai_dominio($link_part_2);
estrai_dominio($link_part_3);
p.s: È soltanto un esempio: non ho provato se funziona.
Ciao!
-
Mi scuso per il ritardo nella risposta.
Allora alemoppo, il sistema che mi ha dato lei funziona alla perfezione:):):)
Funzione:
Codice PHP:
function estrai_dominio($array)
{
$array_0 = array($array[0]);
foreach ($array_0 as $link) {
$dominio_no_www = str_replace("www.", "", parse_url($link, PHP_URL_HOST));
$dominio_no_www_uc = ucfirst($dominio_no_www);
echo "$dominio_no_www_uc:";
};//<<<p.s. si è dimenticato di questo dettaglio.:):)XD
for ($i=0; $i<count($array); $i++)
echo " <a href = $array[$i]>Part($i)</a> -";
}
Richiamo funzione:
Codice PHP:
$link_part_1 = array('http://www.sito.com','http://www.sito2.com');
$link_part_2 = array('http://www.web.com','http://www.web2.com');
$link_part_3 = array('http://www.link.com','http://www.link2.com');
estrai_dominio($link_part_1);
estrai_dominio($link_part_2);
estrai_dominio($link_part_3);
Adesso il problema che voglio risolvere è: che se io vado ad aggiungere $link_part_4, voglio che mi si crei automaticamete estrai_dominio($link_part_4);, senza che io debba scriverlo manualmente.
Come posso risolvere il problema?
Quello che ho pensato io è: che prima bisogna creare una funzione che conti tutti i $link_part, $link_part_2, $link_part_3, $link_part_4, ...(gli faccio sempre in ordine cresente), succesivamente basterebbe la funzione "for" ed ottenere il risulato desiderato. Il problema è che non so come creare una funzione per contare tutti i "link_part", sinceramente non so nemmeno se questo sia possibile.:(:(.
Qualche genio sà come fare?
-
questa potrebbe essere una soluzione, guarda se funziona perchè non l'ho provato:
Codice PHP:
//definisco queste due var:
$link_part_tot=$link_part=array();
$link_part_1 = array('http://www.sito.com','http://www.sito2.com');
$link_part_2 = array('http://www.web.com','http://www.web2.com');
$link_part_3 = array('http://www.link.com','http://www.link2.com');
//qui aggiungi tutti i link_part4,5,6...ecc
$link_part_tot=array_merge($link_part_1,$link_part_2,$link_part_3);//qui dovrai aggiungere gli altri array link_part4,5,6...ecc
//oppure fai un unico array tot includendo tutti i links doppi:
//$link_part_tot=array('http://www.sito.com','http://www.sito2.com','http://www.web.com','http://www.web2.com','http://www.link.com','http://www.link2.com');e così via....
$num_part_tot=count($link_part_tot);
$Nfor=($num_part_tot/2);//2 perchè è il conteggio di un link_part
$a=0;
for ($i=1, $i<=$Nfor,$i++){
$link_part=array_slice($link_part_tot, 0+$a, 2);//vedi il manuale:serve per estrarre valori da un array impostando la posizione di partenza e la lunghezza
estrai_dominio($link_part);
$a=$a+2;
}