je travaille actuellement sur un générateur de classes pour PHP, qui permet de générer un code full php5 en utilisant un "catalogue" xml et/ou une bdd.
Le hic, c'est que je n'arrive pas à passer tout le contenu (sans parser le xml, plutôt avec un regex) en minuscule** mais en gardant les la mise en forme des attributs et des valeurs, par exemple, mettre en minuscule tout sauf les soulignés:
CODE
<?xml version='1.0' encoding='UTF-8'?>
<root>
<package name="FMC">
<subpackage name="Core">
<class name="myClass" description="This is an description.">
<code><![CDATA[return "I'am a very basic php code";]]></code>
</class>
</subpackage>
</package>
</root>
Je n'ai trouver qu'une solution arbitraire en utilisant preg_replace, mais celle-ci ne fonctionne pas parfaitement,
j'espere m'être correctement exprimé, et que vous pourrez me conseiller, merci à tous
(** : Je désires passé le tout en minuscule pour éviter les erreurs liées au formatage)
[Edit]
Juste pour info, j'ai le cerveau qui bouillone mais j'ai trouvé la solution, je la laisse ici, si elle peut service à quelqu'un
CODE
$xml = file_get_contents($this->_filename);
$xmlUp = $xml;
$xmlCo = array();
if (preg_match_all('/(\'|")(.+?)(\\1)/si', $xml, $xmlCo)) {
$xmlCo = $xmlCo[0];
$xml = str_ireplace($xmlCo, $xmlCo, strtolower($xml));
}
$xmlCo = array();
if (preg_match_all('/<!\\[CDATA\\[.+?]]>/si', $xml, $xmlCo)) {
$xmlCoUp = array();
preg_match_all('/<!\\[CDATA\\[.+?]]>/si', $xmlUp, $xmlCoUp);
$xmlCo = $xmlCo[0];
$xmlCoUp = $xmlCoUp[0];
$xml = str_ireplace($xmlCo, $xmlCoUp, $xml);
}
unset($xmlUp);
unset($xmlCo);
unset($xmlCoUp);
if (false === ($this->_catalog = _AT_simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)) ) {
$this->error("Failed to import the catalog « {$this->_filename} » , bad xml structure.");
}
unset($xml);
Voila
[/Edit]