問題タブ [domdocument]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - DOMDocument 関数を使用して処理する前に、PHP で不正な形式の XML を修正する
外部ソースから取得した XML ドキュメントを PHP にロードする必要があります。XML はエンコーディングを宣言しておらず、 のような不正な文字を含んでいます&
。XML ドキュメントをブラウザに直接ロードしようとすると、「テキスト コンテンツに無効な文字が見つかりました」などのエラーが表示されます。また、PHP でファイルをロードするときにも、次のような多くの警告が表示されxmlParseEntityRef: no name in Entity
ますInput is not proper UTF-8, indicate encoding ! Bytes: 0x9C 0x31 0x21 0x3C
。
XML の形式が正しくなく、XML エンティティに変換する必要がある不正な文字が含まれていることは明らかです。
これは、XML フィードが他の多くのユーザーから提供されたデータで構成されており、明らかにそれを取得する前に検証または再フォーマットされていないためです。
XML フィードの供給者と話したところ、彼らはコンテンツ プロバイダーにそれを整理させようとしているとのことですが、最初に入力を検証する必要があるため、これはばかげているように思えます。
PHP の DOMDocument 関数を使用するときに XML が問題をロードするように、エンコード エラーを修正し、不正な文字を XML エンティティに変換して XML を修正する必要があります。
私のコードは現在次のようになっています:
エンコードの問題を示す XML ファイルの例 (クリックしてダウンロード): feed.xml
XML エンティティに変換されていない文字を含む XML の例:
php - DOMDocument::loadXML と HTML エンティティ
XMLパーサーがHTML文字エンティティを認識しないため、現在XHTMLでの読み取りに問題があります。
結果:
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Entity 'copy' not defined in Entity, line: 8 in testing.php on line 19
ページを XHTML5 として提供できるようにしながら、これを修正するにはどうすればよいですか?
php - DOMDocument->saveHTMLFile エスケープされたテキストを保存する
PHP の DOMElement の nodeValue 属性に html の文字列を保存しようとしていますが、DOMDocument->saveHTMLFile でファイルを保存した後、HTML の文字列がエスケープされ、文字列が保存されないようにする方法がわかりません。エスケープされたテキストとして。何か案は?
php - PHP DOMDocument、特定の要素を見つける
PHP DOMDocument を使用して、HTML ドキュメント内の特定の要素の特定の属性を探しています。
具体的には、一意のクラスが設定された div があり、その中にスパンが 1 つだけあります。そのスパン要素のスタイル属性を取得する必要があります。
例:
この例では、uniqueClass がドキュメント内のそのクラスの唯一のインスタンスであるため、文字列を取得する必要があります。
テキスト整列: 中央;
php - PHP:DomElement-> getAttribute
要素のすべての属性を取得するにはどうすればよいですか?以下の例のように、一度に1つしか取得できないので、アンカータグのすべての属性を引き出したいと思います。
ありがとう!
php - PHP DOMDocument - BODY の HTML ソースを取得する
PHP の DOMDocument を使用してloadHTML
、コンテンツを解析するメソッドを使用してユーザーが送信した HTML を解析および正規化し、次の方法で整形式の結果を取得していますsaveHTML
。
これにより、フラグメントが解析され、適切な終了タグが追加されます。問題は、、、、など<!DOCTYPE>
の不要なタグも大量に取得していることです。すべての適切な形式の HTML ドキュメントにはこれらのタグが必要であることは理解していますが、正規化する HTML フラグメントは既存の有効なドキュメントに挿入されます。<html>
<head>
<body>
php - XML PHP5 からコンテンツを取得する
私は支払いソリューションに取り組んでおり、PHP の助けが必要です。私は HTTPRequest を実行しており、それに応じて XML を取得します。XML は次のようになります。
基本的に私がやりたいことは、タグからコンテンツを取得して文字列に保存することです。
私はこれを試しました:
しかし、何もエコーしないため、明らかに何か問題があります..提案はありますか?
php - PHP Dom を使用した不正な形式の HTML の解析
ビデオ (サード パーティが提供) を Web サイトに表示することを希望するクライアントがいます。Web サイトはビデオを表示するために swfobject を使用しているので、クライアントの Web サイトで動作するようにそれを取得して少し変更するのが最も簡単だと思いました。
PHP DOMDocument を使用するのが最善の方法のようですが、残念ながら、提供されている HTML は不正な形式であり、心臓発作を引き起こします。HTML のエラーを無視するようにすることは可能ですか、それとも別の方法でこれを行うことができますか?
php - Salesforce / PHP-アウトバウンドメッセージ(SOAP)-メモリ制限の問題?DOMDocument :: loadXML()タグの問題でデータが途中で終了しましたか?
アップデート:
OK私はそれを理解しました、freadにはファイルサイズの制限があるようです、これをに変更しました
file_get_contents('php://input')
、ただし、SFでjava.net.SocketTimeoutExceptionが発生するようになりました。読み取りタイムアウトエラーが発生し、PHP側では何も発生しません。set_time_limit(0);も追加しました。PHPスクリプトに、私が理解していれば、スクリプトを必要な限り正しく実行します。何かご意見は?
ところで:私は(私がテストした)最大25を処理できますが、100は処理できません
Salesforceを使用して、アウトバウンドメッセージを(SOAP経由で)別のサーバーに送信しています。サーバーは一度に約8つのメッセージを処理できますが、SOAP要求に8つを超えるメッセージが含まれている場合、ACKファイルは返送されません。SFは1つのSOAPリクエストで最大100のアウトバウンドメッセージを送信できます。これがPHPのメモリの問題を引き起こしていると思います。アウトバウンドメッセージを1つずつ処理すると、すべて正常に処理され、一度に8つでも問題なく処理できます。しかし、より大きなセットは機能していません。
SFのエラー:
HTTPエラーログを見ると、着信SOAPメッセージが切り取られているように見え、次のようなPHP警告がスローされます。
PHPの致命的なエラー:
これにより、PHPにメモリの問題があり、サイズが原因で着信メッセージを解析できないと思います。
私はちょうど設定できると思っていました:
しかし、これは正しいアプローチでしょうか?着信SOAPリクエストで動的に増加するようにこれを設定する方法はありますか?
更新:いくつかのコードを追加する
SalesforceからのSOAPリクエストの例では、より大きなリクエストに複数の通知ノードが追加されます。
php - domdocument クラスを使用した html からテキストへの変換
htmlタグなしでhtmlページのソースコードを取得するには? 例えば:
この結果が必要です:
タイトルと alt 属性も必要です。考え?