Newsgroup: it.comp.www.php
Titolo: Ancora sulle regexp

Ciao a tutti.
Ho nuovamente problemi con le regexp (proprio non mi entrano).
Devo 'beccare' tutti i link presenti in una pagina, considerando anche i 
parametri.
Esempio
<a href='
http://www.microsoft.com
' title='TITOLO' rel='nofollow'>testo 
del link</A>
ovviamente la posizione dei parametri è variabile come pure l'apertura e 
la chiusura.
E' possibile farlo con una singola regexp (ottenendo quindi un array 
suddiviso per link con tutti i parametri) o bisogna per forza prima 
prendere tutti gli <a></a> e poi fare il parse dei parametri al suo interno?
Grazie 1k.

 link</A>
Con le funzioni per il DOM ti carichi il documento che vuoi, e con un 
getElementsByTagName("a") ti trovi tutti i nodi che siano collegamenti 
ipertestuali.
Poi con getAttribute("href"), getAttribute("title"), oppure con la 
proprietà attributes, ti estrai tutti gli attributi che vuoi.
In tutto ciò niente espressioni regolari. ;-)
--
rob4you

 rob4you
va beh.. non e' che non ci siano aspetti negativi..
-- 
www.iuz-lab.info

rob4you ha scritto:

una domanda :) perchè vedo che hai gia fatto le tue prove .. secondo te 
è più veloce la ricerca tramite regex o tramite dom ?? io fin'ora ho 
sempre usato le regex per recuperare tutti i link e quindi mi 
interessava sapere la cosa più veloce.
Grazie ;)
-- 
SEZIONE RECUPERO LAVORO: Lancio di una nuova lavatrice sul mercato, due 
morti e sei feriti.
[CapoBecchino] - hotmail/msn: capobecchino [@] hotmail [.] com

 
/<a.*?href=[\"|\'](.*?)[\"|\'].*?>.*?<\/a>/si
Puoi iniziare da questa e vedere se fa al caso tuo, ti recupera sia 
tutto il link quindi <a href='' title='' style''>nome link</a> che il 
testo contenuto tra <a></a> e quindi nell'esempio nome link ;)
-- 
!!! SODDISFATTI O RIMBORSATI !!! Nessuno si è mai lamentato della nostra 
offerta 2x1. Morire in 2 e pagare per 1.


 testo contenuto tra <a></a> e quindi nell'esempio nome link ;)
Sembrerebbe corretta per beccare tutti i link.
Adesso devo fare le regexp equivalenti per prendere gli attributi.

 più veloce.
Per ora le prove le ho fatte solo con le funzioni per il DOM. Le ho 
trovate molto facili da gestire. Diciamo che rispetto alle regexp ci si 
può concentrare di più su ciò che si deve fare, piuttosto che su come 
farlo.
Comunque, appena ho un attimo di tempo, faccio un test incrociato per 
vedere quale metodo è più veloce.
Anche se, già da ora, penso che se un metodo retituisse il risultato in 
0.3 secondi, e l'altro in 0.5, lascerei stare il "vincitore" e userei 
il metodo che comporta meno "problemi mentali" al programmatore. ;-)
--
rob4you

rob4you ha scritto:

Ah| questo sicuramente .. ma visto che sto gestendo uno spider e che 
quindi anche i decimi di secondo mi tornano utili .. cmq .. era una 
curiosità :D
-- 
SEZIONE OMICIDI: Nuova strepitosa offerta, porta 2 amici e vinci. 3 
suocere al prezzo di 2.


 anche i decimi di secondo mi tornano utili .. cmq .. era una curiosità :D
Verissimo, anche io per lo stesso problema, la gestione di uno spider.
E ahimé, su un server in hosting, con la direttiva safe_mode impostata 
a ON, non posso nemmeno impostare il set_time_limit, quindi, o risolvo 
tutto entro il limite che ti fissano loro, o trovo una soluzione che mi 
permette di "aggirare" il problema, tipo memorizzando lo stato in un 
db, o mi attacco... :-)
--
rob4you