Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Recupero dati con regex

    Leggo una pagina web con file_get_contents(), parte del codice che ricevo è questo
    codice:
    <div class="dataBoxWrap">
    	<div class="dataBox">
    		<div class="times">
    			<p class="dataItem"><span class="dataHead">Departs</span>11:58</p>
    			<p class="dataItem arrival"><span class="dataHead">Arrives</span>12:23</p>
    		
    		</div>
    		<p class="dataItem ml25"><span class="dataHead">Approximate travel time</span><span class="noticeTxt01 noticeTxt02">25 mins</span></p>
    	
    	</div>
    	<div class="dataBox">
    		<p class="dataItem"><span class="dataHead">Fare</span>
    		(Adult)<span class="noticeTxt01 noticeTxt02 mr05">190yen</span>
    		(Child)<span class="noticeTxt01 noticeTxt02">100yen</span>
    		</p>
    		<p class="dataItem ml25"><span class="dataHead">Number of transfers</span><span class="noticeTxt01 noticeTxt02 mr05">1</span></p>
    	
    	</div>
    
    </div>
    L'intento è recuperare i dati "Approximate travel time" e i prezzi.
    Sto provando a farlo con le espressioni regolari perché penso sia l'unico modo di riuscirci.
    Per ora sto cercando di prendere tutto il contenuto del <div class="dataBoxWrap">
    Non prendo direttamente i dati perché di quei div possono essercene diversi all'interno della pagina, quindi poi dovrò ciclare su di essi.

    Sto provando così
    Codice PHP:
    preg_match_all('/<div class="dataBoxWrap">(.*?)/',$content,$matches);
    //$content contiene il codice della pagina letta

    $print_r($matches); //stampa: Array ( [0] => Array ( ) [1] => Array ( ) ) 
    Quindi la regex non trova alcuna corispondenza.

    Quale è l'errore?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ho provato a semplificare la regex in questi modi, ma non è cambiato nulla

    class="dataBoxWrap"(.*?)\/dataBoxWrap/
    "dataBoxWrap"(.*?)\/dataBoxWrap/

    Ovviamente ho provato a verificare il contenuto di $content e contiene il codice html riportato nel post precedente.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il problema sembrano essere i ritorni a capo o comunque il fatto che il codice sia su più righe.

    Ho provato ad applicare la regex alla stringa
    <div class="dataBoxWrap">Pippo Pippo/dataBoxWrap

    e Pippo Pippo viene catturato.

    Ho aggiunto il modificatore per il "multilinea" m alla regex, ma continua a non funzionare.

    Nessuna idea?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Va bè, ci sono riuscito così
    Codice PHP:
    $content str_replace(array("\r\n""\r""\n""\t"),'',$content);
    preg_match_all('/"dataBoxWrap"(.*?)/',$content,$matches); 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.