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

    Regex che mi riconosca gli attributi dei tag!

    Salve a tutti e Buon Anno!

    Sto Creando una Classe per leggere gli XML tramite semplici Espressioni Regolari!

    L'ultima funzione (a prova di utonto) che mi manca è quella che dato un tag, mi restituisce un array con gli attributi!

    allora io inizio così:

    Codice PHP:
    function get_array_attrib($tag$xml)
    {
     
    // ottengo attributi e proprietà e > oppure />
     
    $diviso eregi(".*<$tag([^>|^/>]+)(/>|>)"$xml$reqs);

     
    // ottiene solo attributi e proprietà
     
    $attributi trim($reqs[1]);

     
    // restituisce il valore
     
    return $attributi;

    ecco... in questo modo... avendo il documento xml:
    codice:
    <prova>
    	<tag attributo="proprietà" altro='proprietà2' />
    </prova>
    mi restituisce: attributo="proprietà" altro='proprietà2'

    ora come posso continuare per avere alla fine un array di questo tipo:
    [attributo] => proprietà,
    [altro] => proprietà2


    Se Splitto per Spazio, se avessi una proprieta avente spazi, mi troverei tutto sballato...
    come posso fare?

  2. #2

  3. #3
    E Come al Solito... chi fa da se, fa per 3!

    Non ve lo scrivo come ho fatto... visto che non interessava a nessuno!!!

  4. #4
    a dire il vero interesserebbe a me...
    Administrator of NAMDesign.Net

  5. #5
    visto che era xml avrà fatto con il DOM o simpleXML...

  6. #6
    credimi è molto molto complicato ottenere ciò che vuoi...
    io ti consiglio di divedere il lavoro in 2 fasi:

    prima fase: una regex riconosce tutti i tag <tag .... />
    che vengono passati di volta in volta alla seconda regex che riconosce i vari attributi


    o altirmenti non esisotono funzioni già fatti per analizzare documenti xml... io penso di si (non le ho mai utilizzate)

  7. #7
    è quello che ho detto io... simpleXML...

    simpleXML

  8. #8
    visto che era xml avrà fatto con il DOM o simpleXML...
    Ma l'hai letto il primo post? :master: Ho scritto che sto facendo una classe che deve usare solo le Regex!

    credimi è molto molto complicato ottenere ciò che vuoi...
    io ti consiglio di divedere il lavoro in 2 fasi:

    prima fase: una regex riconosce tutti i tag <tag .... />
    che vengono passati di volta in volta alla seconda regex che riconosce i vari attributi


    o altirmenti non esisotono funzioni già fatti per analizzare documenti xml... io penso di si (non le ho mai utilizzate)
    come hai potuto leggere al primo post, ho gia diviso il lavoro in 2 fasi:

    la prima ke legge il tag,e la seconda regex ke è quella ke mi serviva legge gli attributi...

    a dire il vero interesserebbe a me...
    Visto che a qualcuno interessa... posto la funzione completa...

    Codice PHP:
         /**
         * Restituisce un Array di Attributi
         *
         * Restituisce un Array contenente gli Attributi del Tag e i Relativi Valori
         *
         * @author Stefano V. <info@svsoftwares.org>
         *
         * @param string $tag Nome del ramo di elementi XML da cercare
         * @param string $xml Nome del file XML da processare
         * @return array Array contenente gli attributi del tag con relative proprietà
         */
        
    function get_array_attrib($tag$xml)
        {
            
    // pattern che ottiene tra <tag e >
            
    $diviso eregi(".*<$tag([^>|^/>]+)(/>|>)"$xml$reqs);
            
            
    // prende solo la prima occorrenza
            
    $attributi trim($reqs[1]);
            
            
    // pattern che ottiene un array con tutti i: PROP = "VAL"
            
    $finale preg_match_all("#([^=]+)=[\"|']([^\"|^']*)[\"|']#"$attributi$arry);
            
            
    // conta il numero di elementi
            
    $ca count($arry[1]);
            
            
    // per ogni elemento trovato
            
    for($i=0$i<$ca$i++)
            {
                
    // aggiunge all'array finale un array in coda formato da [PROP] => VAL
                
    $array_finale[] = array($arry[1][$i] => $arry[2][$i]);
            }
            
            
    // restituisce il valore
            
    return $array_finale;
        } 
    questa funzione va usata così sull'xml al primo post:

    Codice PHP:
    // ottiene un array contenente le proprietà del tag scelto con relativi valori
    $aa get_array_attrib("tag"$chat);

    // conta le proprietà nel tag
    $c_att count($aa);

    // ciclo gli array contenuti in $aa { [0] => array([prop1] => val1), [1] => array([prop2] => val2], [N] => array([propN]=> valN) }
        
    foreach($aa as $ar)
        {
            
    // ciclo l'array passato in $ar dal foreach { [propN] => valN }
            
    foreach($ar as $key => $val)
            {
                
    // stampa il nome proprietà ($key) e il valore associato ($val)
                
    print("Propriet&agrave;: $key 
     Valore: 
    $val

    "
    );
            }
        } 

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.