Administrateur PHPfrance |
3088 Messages
22 août 2007, 20:26
Mon avis : songe sérieusement à trouver un hébergeur PHP 5. Sinon, voici quelques rustines qui devraient plus ou moins faire l'affaire.
Cette fonction fait à peu près la même chose que file_put_contents()
function file_put_contents($filepath, $contents)
{
$fp = fopen($filepath, 'wb');
fwrite($fp, $contents);
fclose($fp);
}
Cette fonction fait moins d'un milliardième de ce qu'offre SimpleXML, mais suffit à faire fonctionner mon exemple précédent tant que Miniville ne change pas le format de son fichier XML :
function simplexml_load_file($filepath)
{
$obj = new stdClass;
if (preg_match_all('#<([^>]+)>(.*?)</\\1>#', file_get_contents($filepath), $tags, PREG_SET_ORDER))
{
foreach ($tags as $tag)
{
$obj->$tag[1] = $tag[2];
}
}
return $obj;
}
Concernant le masque
<([^>]+)>(.*?)</\\1> ça signifie
- <([^>]+)>
n'importe quoi entre < et > à l'exception d'un >
- (.*?)
suivi de "tout sauf un saut de ligne" (par défaut le point . correspond à tout charactère sauf un saut de ligne)
- </\\1>
suivi de </ puis de la même chose qu'il y avait dans les 1ères parenthèses, puis >
La fonction te renverra un objet (stdClass est la classe de base de PHP) dont les propriétés correspondent aux balises du machin de Miniville. J'insiste sur le fait qu'il s'agit d'une solution très bancale, qui ne survivra pas le jour où Miniville changera le format de ses données. D'un autre côté, si tu mets à jour PHP tu n'auras qu'à retirer les fonctions "bancales" et utiliser celles de base, plus sûres et plus rapides.