Ciao ragazzi, devo fare una funzione che mi controlli un testo gigantesco e mi tiri fuori tutti i link completi
praticamente voglio che da
hhuiyhu
mi tiri fuori il contenuto del tag href completo
ciao
Ciao ragazzi, devo fare una funzione che mi controlli un testo gigantesco e mi tiri fuori tutti i link completi
praticamente voglio che da
hhuiyhu
mi tiri fuori il contenuto del tag href completo
ciao
Mercatino online di annunci www.all-onweb.com
Realizzazione siti web www.nineseven97.com
Artigianato www.lartedifare.com
strpos
substr
e un pò di olio di gomito
...::: DESIDERARE E' UMANO :::...
...::: POSSEDERE E' DIVINO :::...
...::: HAVE A NICE DAY :::...
(¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
http://www.djhellclub.com
chiaramente così non mi va bene e ci arrivavo da solo, ho bisogno di sapere se c'è una funzione o qualcosa di già pronto per evitare di usare l'olio del gomito che è già in uso per 10000 altre cose.
Mercatino online di annunci www.all-onweb.com
Realizzazione siti web www.nineseven97.com
Artigianato www.lartedifare.com
praticamente ti devi fare una funzione di parsing.
E l'olio di gomito devi mettercelo ebbasta senno una bbona tecnica e' usare explode
tipo
$testo = [mega testo] ;
$tokens = explode ("<a" , $testo);
A to punto hai spezzato il file in un bella'array tutti che inizano per il link senza <a tranne il primo che potrebbe essere tutt'altra cosa fatti dei conrolli prima di splodere il testo magari... cmq
dopo fai un ciclo che scorre l'array e dentro
$link = "<a".substr( $tokens[$i] , 0 , strpos( $tokens[$i] , "</a>" )+3 );
array_push($links , $link);
ovviamente e' un'idea per fare in poco tempo la ricerca ed estrazione dei link devi testarla cmq in linea di max dovrebbe andare
Scusate se intervengo, ma ..... preg_match_all() con una bella espressione regolare no????
Una RegExp del genere dovrebbe andare per riconoscere i link nella stringa passata.
Codice PHP:
$pattern = "/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}'.'((:[0-9]{1,5})?\/.*)?$/i";
![]()
eccolo la grazie alcio74
me la sto facendo e sto utlizzando quella funzione ma ancora non ci sono
per ora sono così, ma non va
$html = "bold text<a href=howdy.html>click me</a>";
preg_match_all("/^(http|https)://[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}'.'((:[0-9]{1,5})?/.*)?$/i",$html,$matches);
##preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);
for ($i=0; $i< count($matches[0]); $i++) {
echo "intero criterio: ".$matches[0][$i]."\n";
echo "parte 1: " . $matches[1][$i] . "\n";
echo "parte 2: " . $matches[3][$i] . "\n";
echo "parte 3: " . $matches[4][$i] . "\n\n";
}
non va ancoraaa
Mercatino online di annunci www.all-onweb.com
Realizzazione siti web www.nineseven97.com
Artigianato www.lartedifare.com
Beh si vero con reg exp e' un altra soluzione purtroppo io nn sono un drago di reg exp.
Non ho davvero tempo di mettermi a studiarmele bene . Cmq alla fine con una explode almeno sai a priori cosa succede ^_^
forse non hai capito, non voglio fare explode, voglio risolverlo con il sistema di alcio74
explode, strpos ecc ecc li voglio evitare
Mercatino online di annunci www.all-onweb.com
Realizzazione siti web www.nineseven97.com
Artigianato www.lartedifare.com
fa un po' come vuoi alla fine sei te che devi impazzire.
cmq pensa a questa
Poi vedi te . buona sclerata sulle reg exp.Codice PHP:
function extractLinks($testo)
{
$tokens = explode("href=\"" , $testo);
$out = array();
for($i=0 ; $i<count($tokens) ; $i++)
{
$tmp = substr( $tokens[$i] , 0 , strpos($tokens[$i] , "\"" )-1 );
array_push($out , $tmp);
}
return $tmp;
}
@Virus_101
Il concetto è lo stesso dei viaggi: per andare da Milano a Roma puoi prendere la A1 oppure salire a Dusseldorf, girare per Vienna e passare per Madrid!Cmq alla fine con una explode almeno sai a priori cosa succede ^_^
Il discorso finale è anche di performance: se la stringa da controllare è lunga una quarisma, l'explode ti farà impazzire.
Perdici tempo dietro le Regexp.
Io ancora non le maneggio benissimo, ma non immagini neanche quanto tempo ti fanno risparmiare!
@caniggia
Forse ti ho scritto l'espressione sbagliata, in quanto credevo che ci fossero link assoluti nella tua stringa.
Potresti provare qualcosa del genere.
Ad ogni modo, prova a stampare l'array $matches per vedere se ti torna qualcosa ed in quale formato.Codice PHP:
$pattern = "/^(href=\"?)[[:alnum:]].[[:alnum:]]{2,4}/i";
Se non dovesse andare la RegExp, postala di nuovo, oppure apri un nuovo thread chiedendo info per quella.
Ci sono dei veri maghi delle espressioni regolari, in giro per il forum.
![]()