Buongiorno programamtori,
Ho un problema con il passaggio del carattere "&" da una variabile php di tipo stringa al documento xml,
queste sono le prove che ho fatto fin ora ma non hanno portato a nulla, invece della & sull' xml esce la sua codifica di carattere : &
codice:
$doc = new DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$r = $doc->createElement("Users");
$doc->appendChild($r);
$b = $doc->createElement("Users");
$UserSdio="pippo & pluto";
$UserSdio1= decode_entities( $UserSdio);
$UserSdio2=htmlspecialchars_decode($UserSdio, ENT_XHTML);
$UserSdio3= utf8_decode( $UserSdio);
$UserSdio4=philsXMLClean($UserSdio);
$UserSdio5=rawurlencode($UserSdio);
$UserSdio6=urlencode($UserSdio);
$UserSdio7=htmlentities($UserSdio, ENT_QUOTES);
$UserSdio8=htmlentities($UserSdio, ENT_SUBSTITUTE);
$UserSdio9=htmlentities($UserSdio, ENT_DISALLOWED);
$UserSdio10=iconv("UTF-8", "ISO-8859-1//TRANSLIT", $UserSdio);
$UserSdio11=htmlentities($UserSdio, ENT_XML1);
$UserSdio12=htmlentities($UserSdio, ENT_HTML5);
$UserSdio13=htmlentities($UserSdio,ENT_QUOTES, "UTF-8");
$UserSdio14=html_entity_decode($UserSdio);
//$UserSdio15=_UTF8ToHTML($UserSdio);
$UserSdio16=utf8_encode(html_entity_decode($UserSdio));
$UserSdio17 = html_entity_decode($UserSdio, ENT_COMPAT, 'UTF-8');
//$UserSdio18= htmlspecialchars_decode($UserSdio,ENT_COMPAT);
/*var_dump(get_html_translation_table(HTML_SPECIALCHARS,ENT_QUOTES));
var_dump(htmlspecialchars('\'',ENT_QUOTES));*/
$UserSdi= $doc->createElement('UserSdi');
$UserSdi->appendChild($doc->createTextNode($UserSdio18)); //$UserSdi->appendChild($doc->createTextNode(utf8_decode($UserSdio)));
$b->appendChild($UserSdi);// Aggiungo Proprietario
$r->appendChild($b);
$xmlfile = 'convert.xml';
$doc->save($xmlfile);
function philsXMLClean($strin) {
$strout = null;
for ($i = 0; $i < strlen($strin); $i++) {
$ord = ord($strin[$i]);
if (($ord > 0 && $ord < 32) || ($ord >= 127)) {
$strout .= "&#{$ord};";
}
else {
switch ($strin[$i]) {
case '<':
$strout .= '<';
break;
case '>':
$strout .= '>';
break;
case '&':
$strout .= '&';
break;
case '"':
$strout .= '"';
break;
default:
$strout .= $strin[$i];
}
}
}
return $strout;
}
function decode_entities($text) {
$text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-1"); #NOTE: UTF-8 does not work!
$text= preg_replace('/&#(\d+);/me',"chr(\\1)",$text); #decimal notation
$text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\\1)",$text); #hex notation
return $text;
}
il risultato è sempre:
[CODE]
<?xml version="1.0" encoding="utf-8"?>
<Users>
<Users>
<UserSdi>pippo & pluto</UserSdi>
</Users>
</Users>
[/CODE}]