sexta-feira, 28 de maio de 2010

XML to Array PHP

Contribuição de Ricardo Feitosa (Transforma um XML para array)


function xml2array($xml)
{
$xmlary = array();
$reels = '/<(\w+)\s*([^\/>]*)\s*(?:\/>|>(.*)<\/\s*\\1\s*>)/s';
$reattrs = '/(\w+)=(?:"|\')([^"\']*)(:?"|\')/';
preg_match_all($reels, $xml, $elements);
if (is_array($elements))
{
foreach ($elements[1] as $ie => $xx)
{
$cdend = strpos($elements[3][$ie], "<");
if ($cdend > 0)
{
$xmlary[$elements[1][$ie]] = substr($elements[3][$ie], 0, $cdend - 1);
}
if (preg_match($reels, $elements[3][$ie]))
$xmlary[$elements[1][$ie]] = xml2array($elements[3][$ie]);
else
if ($elements[3][$ie])
{
$xmlary[$elements[1][$ie]] = $elements[3][$ie];
}
}
return $xmlary;
}
return $xml;
}

function xml2get($id,$xml)
{
$parametros = xml2array($xml);
$resultado = "";
foreach ($parametros[$id] as $key => $value)
$resultado.= "$key=".urlencode($value)."&";
if (substr($resultado,-1) == "&")
return substr($resultado,0,-1);
return false;
}

quinta-feira, 27 de maio de 2010

GET passando por um proxy

Com o código abaixo eu consigo fazer uma requisição GET passando por um proxy. Com stream context fica bem mais simples que montar a string no formato do HTTP.

$proxyUser="usuario";
$proxyPasswd = "senha";
$authProxy = base64_encode($proxyUser . ":" . $proxyPasswd);
// Création des options de la requête
$opts = array(
'http' => array (
'method'=>'GET',
'proxy'=>'tcp://endereco:porta',
'request_fulluri' => true,
'header'=>"Proxy-Authorization: Basic $authProxy"
)
);

// Création du contexte de transaction
$context = stream_context_create($opts);
// Récupération des données
$data = file_get_contents('http://www.google.com', false, $context);

echo $data;
?>


Contribuição de Carlos Eduardo de Andrade Brasileiro