0

サイトで外部スクリプトを使用していますが、XML コードを生成しようとすると構文に問題があるようです。

2 行目には引用符がなく、ページがクラッシュします。どうすれば解決できますか?なぜそれは他の人々のために働いたのですか?PHPのバージョンについてですか?

$h->xmlrequest = '<?xml version="1.0"?>'; 
$h->xmlrequest .= <<<END 
<a:searchrequest xmlns:a="DAV:" xmlns:s="http://schemas.microsoft.com/exchange/security/"> 
  <a:sql> 
     SELECT "DAV:displayname" 
     ,"urn:schemas:httpmail:subject" 
     FROM "$exchange_server/Exchange/aaaaa/inbox" 
  </a:sql> 
</a:searchrequest> 
END;

この問題により、PHP ファイルを実行できなくなり、外部出力が表示されなくなります。これを試すだけでもクラッシュします:

$h->xmlrequest = '<'.'?xml version="1.0"?'.'>'; 
$h->xmlrequest .= <<<END 
END;

エラーを表示すると、これは私が得るエラーです:

Parse error: syntax error, unexpected T_SL in C:\inetpub\wwwroot\fromMail\index2.php on line 23

行 23 は <<< END の行です。

4

5 に答える 5

1

最初の <<< END の後に空白がありました

問題が解決しました。

于 2012-09-07T11:25:52.037 に答える
1

ああ、これを見つけるのは本当に難しいです: 行末に予備の空白があり<<<ENDます:

$h->xmlrequest .= <<<END 
//----------------------^

だからエンディング

END;

もう一致しません。

于 2012-09-07T11:29:05.847 に答える
1

変化する:

$h->xmlrequest = '<?xml version="1.0"?>'; 

に:

$h->xmlrequest = '<'.'?xml version="1.0"?'.'>'; 
于 2012-09-07T10:03:33.280 に答える
0

多分ライン変えます

$h->xmlrequest = '<?xml version="1.0"?>'; 

$h->xmlrequest = '<' . '?xml version="1.0"?' . '>'; 

?>パーサーがPHPスクリプトの終わりを意味すると考えるので、トリックを行います。

于 2012-09-07T10:02:50.013 に答える
0

変数名を中かっこで囲む必要$exchange_serverがあります。そうしないと、PHP は解析を試みますが、周囲のコードの影響を受ける可能性があります。

つまり、あなたの場合、$exchange_server の後のスラッシュ文字が PHP パーサーを混乱させる可能性があります。

それで...

$h->xmlrequest .= <<<END 
<a:searchrequest xmlns:a="DAV:" xmlns:s="http://schemas.microsoft.com/exchange/security/"> 
  <a:sql> 
     SELECT "DAV:displayname" 
     ,"urn:schemas:httpmail:subject" 
     FROM "{$exchange_server}/Exchange/aaaaa/inbox" 
  </a:sql> 
</a:searchrequest> 
END;

中括弧は、変数の周囲に関係なく、変数が正しく解析されることを保証します。

それが役立つことを願っています。

于 2012-09-07T10:04:55.067 に答える