Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627

    Intercettare caratteri in una pagina

    Ciao a tutti,
    volevo chiedevi un consiglio: ho la necessità se possibile di estrapolare da una pagina web dei valori per utilizzarli all'interno di un memo (preciso che il sito in questione è di nostra proprietà, solo che è sviluppato con un db differente non è possibile accedervi se non con delle modifiche radicale.....cosa al momento impensabile).
    Ora i valori che voglio estrapolare sono impaginati all'interno di una tabella e nello specifico all'interno di una cella così composta:

    <table width="200" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td class="boot">id</td>
    <td class="jid">001 </td>
    </tr>
    <tr>
    <td class="boot">id1</td>
    <td class="jid">002</td>
    </tr>
    <tr>
    <td class="boot">id2</td>
    <td class="jid">003</td>
    </tr>
    <tr>
    <td class="boot">id3</td>
    <td class="jid">003 </td>
    </tr>
    <tr>
    <td class="boot">id4</td>
    <td class="jid">004</td>
    </tr>

    </table>

    penso che quello che si potrebbe fare è riucire intercettare la scritta "jid"e copiare tutto quello che c'è a destra fino al carattere "</" e poi ciclarlo per tutta la pagina

    il campo che mi intaressa leggere è quello con la classe jid...è possibile farlo ?
    Grazie
    Ultima modifica di james81; 28-03-2014 a 09:58

  2. #2
    Codice PHP:
    $str '
    <table width="200" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td class="boot">id</td>
    <td class="jid">001</td>
    </tr>
    <tr>
    <td class="boot">id1</td>
    <td class="jid">002</td>
    </tr>
    <tr>
    <td class="boot">id2</td>
    <td class="jid">003</td>
    </tr>
    <tr>
    <td class="boot">id3</td>
    <td class="jid">003</td>
    </tr>
    <tr>
    <td class="boot">id4</td>
    <td class="jid">004</td>
    </tr>
    </table>
    '
    ;

    $pattern '/<td class="jid">(.*)<\/td>/i';
    preg_match_all($pattern$str$matches);

    foreach(
    $matches[1] as $value) {
        echo 
    $value."<br/>";

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    grazie mille, l'ho provato ma non riesco a preleverare tutti i dati, alcuni non mi vengono letti, penso sia dovuta alla formattazione di alcuni di essi che magari sono in grassetto o link, da cosa può dipendere ?

  4. #4
    Hai detto che l'HTML aveva un certo formato (come l'esempio da te postato). Ovviamente se esso non è in tale forma il pattern per l'espressione regolare va adeguato di conseguenza in modo da prevedere tutti i possibili casi.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    sì scusa, ma mi ero fermato alla lettura delle prime righe, guardando poi il codice html, mi sono reso conto che alcuni campi li visualizzo impaginate correttamente ma nel codice vanno a capo

    Es.
    <td class="jid">
    0010101 </td>

    mentre altri contengono dei link

    <td class="jid">
    <a href="http://www.xxx.xx" target="_blank">
    002 < /a></td>

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    ho fatto qualche prova ma nulla...il problema è che il codice interpretato è a capo

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Prendi il codice della pagina, lo metti in una variabile (penso tu già lo faccia), poi con un str_replace rimpiazzi tutti gli spazi e ritorni a capo con "" così ti ritrovi tutto su una riga e l'espressione regolare non avrà problemi.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    si infatti per gli spazi vuoti ho risolto così, ma per il ritorno a capo come faccio ?

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    i ritorni a capo saranno \r\n oppure \n oppure \r a seconda della codifica che viene recuperata (al 99% saranno \n, ma tu il replace fallo su tutti)

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    $pattern = '/<td class="jid">(.*?)<\/td>/is';

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.