Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Estrarre attributi da tag html

    Ciao,
    dovrei estrarre gli attributi dei vari tag html di una pagina.

    il problema č che il codice non č dei migliori:

    codice:
    < div id="spiegazione" class   =    "verde">
    <div id= spiegazione class=verde>
    si puo usare una regexp o mi conviene scrivere un piccolo parser (magari con un explode sul "=")?

  2. #2

    Re: Estrarre attributi da tag html

    Originariamente inviato da l'evangelista

    si puo usare una regexp o mi conviene scrivere un piccolo parser (magari con un explode sul "=")?
    Non credo che explodere su = sia una buona idea.

    questo sarebbe il risultato

    < div id

    "spiegazione" class

    "verde"><div id

    cosa te ne fai?

    Senza contare il fatto che poi nel testo della pagina potrebbe esserci il carattere =, e questo complicherebbe ulteriormente le cose.

    Direi che l'idea delle espressioni regolari sia l'unica strada praticabile
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3

    Re: Re: Estrarre attributi da tag html

    Originariamente inviato da mtx_maurizio
    Non credo che explodere su = sia una buona idea.

    questo sarebbe il risultato

    < div id

    "spiegazione" class

    "verde"><div id

    cosa te ne fai?

    Senza contare il fatto che poi nel testo della pagina potrebbe esserci il carattere =, e questo complicherebbe ulteriormente le cose.

    Direi che l'idea delle espressioni regolari sia l'unica strada praticabile
    be con una regexp intanto posso tagliare i brackets e il tag, la stringa diventa
    codice:
    id="spiegazione" class   =    "verde"
    id= spiegazione class=verde

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Se sai usare la classe DOM sicuramente la soluzione migliore č utilizzare quella

    loadhtmlfile
    Una volta che hai caricato tutto sul dom estrarre gli attributi č molto semplice.


    Andrea

  5. #5
    per cominciare potresti fare una cosa del genere, perō dovresti dire come li vuoi organizzare questi dati. Che fai sei hai 2 div con gli stessi attributi?
    Cmq per esempio

    Codice PHP:
    preg_match_all('/<(\\w+)([^>]+)>/',$codice,$mth,PREG_SET_ORDER);
    echo 
    '<pre>'.print_r($mth,true); 
    Ti restituisce il contenuto dei vari tag, poi facendo un ciclo foreach su $mth si potrebbe operare con una ulteriore espressione regolare.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  6. #6
    Originariamente inviato da AnĒkin
    per cominciare potresti fare una cosa del genere, perō dovresti dire come li vuoi organizzare questi dati. Che fai sei hai 2 div con gli stessi attributi?
    Cmq per esempio

    Codice PHP:
    preg_match_all('/<(\\w+)([^>]+)>/',$codice,$mth,PREG_SET_ORDER);
    echo 
    '<pre>'.print_r($mth,true); 
    Ti restituisce il contenuto dei vari tag, poi facendo un ciclo foreach su $mth si potrebbe operare con una ulteriore espressione regolare.
    pero cosi ho solo separato il tag dal resto, ma non i singoli attributi.
    Esempio
    codice:
    <font family="verdana" size="2" color="#ffffff">
    mi restituisce, con print_r
    Codice PHP:
    Array
    (
        [
    0] => Array
            (
                [
    0] => <font family="verdana" size="2" color="#ffffff">
            )

        [
    1] => Array
            (
                [
    0] => font
            
    )

        [
    2] => Array
            (
                [
    0] =>  family="verdana" size="2" color="#ffffff"
            
    )


    quindi i vari attributi devo comunque splittarli in qualche modo.
    Il problema č che posso avere
    codice:
    family=verdana
    family="verdana"
    family='verdana'
    unica costante č l'uguale = che separa l'attributo dal valore. per questo mi era venuto in mente l'explode, abbinato magari ad una regexp di partenza (Come la tua che quantomeno mi isola gia il tag)

  7. #7
    Originariamente inviato da l'evangelista
    [...]
    Sė quello era il primo step.

    Prova una cosa del genere, č da testare perō:
    codice:
    preg_match_all('/<(\w+)([^>]+)>/',$codice,$mth,PREG_SET_ORDER);
    
    foreach($mth as $match){
    	preg_match_all(
    	  '/(\w+)\s*=\s*(?:(\\'|")([^\\2]+)\\2|(\S+))/'
    	  ,$match[2]
    	  ,$m
    	  ,PREG_SET_ORDER
      );
    print_r($m);
    }
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

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.