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à: $key
Valore: $val
");
}
}