ホームページ  >  記事  >  バックエンド開発  >  http://www.12306.cn/mormhweb/k PHP の原則、エラー抑制、埋め込み HTML 分析についての深い理解

http://www.12306.cn/mormhweb/k PHP の原則、エラー抑制、埋め込み HTML 分析についての深い理解

WBOY
WBOYオリジナル
2016-07-29 08:45:041186ブラウズ

PHP にはエラー サプレッサー '@' が用意されています。どのようにしてエラー出力を防ぐことができますか?
これは、過去 2 日間で一部のネットユーザーが指摘した一般的な問題です
PHP ファイルに埋め込まれた HTML を処理する方法
PHP では、構文解析プロセス中にタグの外側のすべての文字が T_INLINE_HTML トークンに変換されます。
つまり、次のようになります。

コードをコピーします コードは次のとおりです:

while($con) {
?>
laruence
}
?> OPLINE: T_ECHO、オペランドは "laruence";
結果に関する限り、上記のコードは実際には次の結果と同じです:


コードをコピーします

コードは次のとおりです:

while($con) { echo "laruence";

}

?>


ただし、注意すべき点は、字句解析プロセス中に PHP タグの外側の文字が分割されることです。例:


コードをコピー

コードは次のとおりです:

if(1) { ?> laruence laruence laruence laruence laruence laruence laruenceラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス

}
?>

上記のコードでは、タグの外側に 531 文字 (スペースと復帰を含む) があり、これは 2 つの T_INLINE_HTML 出力に分割されます。
エラー抑制機能
PHP では、エラー抑制機能を使用してエラーを抑制できることがわかっています。


コードをコピーします
@ include('file'); >


は include ステートメントの前後に 2 つの Opline (オペレーション) を挿入します:

コードをコピーします コードは次のとおりです:


1 。 value と set error_reporting(0); // エラー出力をオフにします
2. 以前に保存した error_reporting 値を復元します

つまり、実際には、上記のコードは次のコードに似ています:

コードをコピーします。 コードは次のとおりです:

$old = error_reporting(0);
include('file');

さらに余談をさせてください。抑制を適用するのは何ですか?」という質問に対して、私の個人的な提案は、このステートメントが間違っていて、それがあなたにほとんど影響を与えないのであれば、エラーが何であるかは気にせず、この種のエラーを処理するために追加のロジックを用意する必要はないということです。そうでない場合は、追加のロジックを使用してエラーを特定してください。
上記では、http://www.12306.cn/mormhweb/k の内容を含む、エラー抑制と埋め込み HTML 分析の PHP 原則についての http://www.12306.cn/mormhweb/k の深い理解を紹介しました。 . PHP チュートリアルに興味がある人にとって役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。