[解決済み] DomDocument (PHP) で整形式でない HTML を読み込む際の警告を無効化する。
2023-05-12 10:40:11
質問
HTMLファイルを解析したいのですが、整形式でないため、PHPが警告を出力してしまいます。このようなデバッグ/警告の動作をプログラムで回避したいのですが、どうすればよいでしょうか。アドバイスをお願いします。ありがとうございます。
コードです。
// create a DOM document and load the HTML data
$xmlDoc = new DomDocument;
// this dumps out the warnings
$xmlDoc->loadHTML($fetchResult);
これは
@$xmlDoc->loadHTML($fetchResult)
は警告を抑制することができますが、これらの警告をプログラムで捕捉するにはどうしたらよいでしょうか。
どのように解決するのですか?
一時的なエラーハンドラを設置するには
set_error_handler
class ErrorTrap {
protected $callback;
protected $errors = array();
function __construct($callback) {
$this->callback = $callback;
}
function call() {
$result = null;
set_error_handler(array($this, 'onError'));
try {
$result = call_user_func_array($this->callback, func_get_args());
} catch (Exception $ex) {
restore_error_handler();
throw $ex;
}
restore_error_handler();
return $result;
}
function onError($errno, $errstr, $errfile, $errline) {
$this->errors[] = array($errno, $errstr, $errfile, $errline);
}
function ok() {
return count($this->errors) === 0;
}
function errors() {
return $this->errors;
}
}
使用方法
// create a DOM document and load the HTML data
$xmlDoc = new DomDocument();
$caller = new ErrorTrap(array($xmlDoc, 'loadHTML'));
// this doesn't dump out any warnings
$caller->call($fetchResult);
if (!$caller->ok()) {
var_dump($caller->errors());
}
関連
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?
-
[解決済み] PHP 未定義関数への呼び出し
-
[解決済み] html5-tagsのPHP DOMDocumentエラー/ワーニング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み] html5-tagsのPHP DOMDocumentエラー/ワーニング