Salve, questa è una porzione di codice di un metodo di una classe:
Codice PHP:
function Login($username,$seccode){
// Getting preferred host
if(!$this->http->host){
$this->http->host = DEF;
$status = $this->http->get(INIT.'?OutputType=XML');
if ($status != HTTP_STATUS_OK) return 0;
$xml = $this->http->get_response_body();
$suggested = null;
$post = null;
function OpenMenu( $parser, $name, $attrs ){
global $suggested;
$suggested = $name;
}
function CloseMenu( $parser, $name ){
global $suggested;
$suggested = NULL;
}
function TextMenu( $parser, $text ){
global $suggested, $post;
if($suggested == 'RECOMMENDEDURL'){
$post = $text; }
}
$parser = xml_parser_create();
xml_set_element_handler( $parser, 'OpenMenu', 'CloseMenu' );
xml_set_character_data_handler( $parser, 'TextMenu' );
if(xml_parse( $parser, $xml ))echo "OK";
xml_parser_free($parser);
echo $post;
$post = str_replace("http://","",$post);
$this->http->host = $post;
}
//...qui continua con altre cose
}
Dunque in poche parole la variabile $post non mantiene memoria di $text quando gli è assagnato nella funzione TextMenu. Ho verificato facendo un pò di debugging che in quella funzione $post acquisice il valore di $text ma non lo mantiene poi quando devo usarlo in $post = str_replace("http://","",$post);
Se devo essere sincero credo che io stia commettendo un errore banale ma non riesco a capire dove sbaglio.