ホームページ >バックエンド開発 >PHPチュートリアル >phpmaster | phpqueryを使用したサーバー側のHTML処理

phpmaster | phpqueryを使用したサーバー側のHTML処理

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-02-27 10:26:15307ブラウズ

phpmaster | phpqueryを使用したサーバー側のHTML処理

Web開発の日々のタスクでは、クライアントとサーバー側の両方のコードを使用する必要があります。 PHPを使用してビジネスロジックを作成し、ユーザーのブラウザに表示されるHTMLを生成します。次に、jQueryやプロトタイプなどのフレームワークを使用して、クライアント側のインタラクティブ性を提供します。 ここで、サーバー側のPHPコードを使用して、生成されたHTMLを変更および操作する方法について考えてください。 phpqueryは、あなたの頭に浮かぶ究極の解決策です。 phpqueryについて聞いたことがない場合は、この記事に興味があるかもしれません。なぜなら、私はあなたにphpqueryの簡単な紹介をして、実際のプロジェクトでそれを使用する方法を説明するつもりです。

キーテイクアウト

  • phpqueryは、jQuery javascriptライブラリに基づいたサーバー側のチェーン可能なCSS3セレクター駆動型ドキュメントオブジェクトモデル(DOM)APIです。 DOM操作を必要とするタスクを簡素化し、jQueryに同様の機能を提供し、エコーステートメントと同様の方法を使用して乱雑なHTMLコード生成の必要性を排除します。
  • PHPQueryの機能には、DOM要素の作成、要素の選択と操作、DOMを介した繰り返し、出力の印刷が含まれます。また、セレクター、属性、トラバース、操作、ajax、イベント、ユーティリティなどの機能も提供します。
  • phpqueryを使用すると、開発者はサーバー側のPHPコードを使用して生成されたHTMLを変更および操作できます。これにより、クライアント側で伝統的に行われたタスクがサーバー側で処理できるようになるため、Webアプリケーションのパフォーマンスとセキュリティを改善できます。
  • phpqueryは、純粋なPHPコードと比較して、コードの品質と拡張性を向上させます。これにより、コードは拡張機能のためにオープンになりますが、修正のために閉じられ、閉じられた原則に準拠しています。これは、既存のコードを変更せずに新しい機能を追加し、コードの堅牢性と保守性を向上させることができることを意味します。
  • phpquery
  • とは何ですか
  • Phpqueryは、jQuery JavaScriptライブラリに基づいたサーバー側のチェーン可能なCSS3セレクター駆動型ドキュメントオブジェクトモデル(DOM)APIです。
これは、公式のphpqueryプロジェクトページに記載されている定義です。 JQueryを使用している場合は、DOM操作を必要とする多くのタスクをどのように簡素化できるかを知ることができます。 PHPQueryは、サーバー側のPHPコード内で使用するのとまったく同じ機能を提供します。エコーステートメントと同様の方法を使用して、さようならHTMLコード生成を言うことができます。 jqueryが提供する機能のほとんどにアクセスできます。これは、以下の4つのタスクに広く分けることができます。

dom要素の作成
要素の選択と操作
  • dom
  • を介して反復します
  • 出力をブラウザに印刷
「移植されたjQueryセクション」として知られるPhpqueryが提供する機能を使用して、タスクを実行できます。最初に機能を見てみましょう:
  • セレクター - 指定された条件に基づいて要素を見つけます。
  • 属性 - DOM要素の属性を使用します。
  • トラバース - 選択された要素のリストを通過します。
  • 操作 - 選択した要素にコンテンツを追加および削除します
  • ajax - サーバー側のajaxリクエストを作成します。
  • イベント - 選択した要素でDOMイベントをバインドします
  • ユーティリティ - 他の機能をサポートする汎用関数
  • code.google.com/p/phpqueryのプロジェクトページからphpqueryライブラリをダウンロードできます。フォルダーをWebサーバーにコピーすると、準備ができています。インストールはそれのように簡単で、Demo.phpファイルを実行して開始できます。
  • phpquery
  • の使用方法 下の画像に示すように、ヘッダーと異なる列の色を奇妙な行と列の異なる列の色を備えた2列の順序リストを作成する方法を紹介します。

まず、phpqueryを使用してHTMLドキュメントを作成しましょう。

上記のコードは、Divタグを使用して基本的なHTMLドキュメントを作成します。ライブラリは、ドキュメントを作成するさまざまな方法を提供します。私は最もシンプルなものを使用しましたが、demo.phpとドキュメントで他のものを見つけることができます。 次に、順序付けられていないリストを作成し、HTMLドキュメントに追加する必要があります。 phpmaster | phpqueryを使用したサーバー側のHTML処理 順序付けられていないリストがあることがわかります。ただし、すべての要素は単一の列にあり、デフォルトです。リストの均等な要素を2番目の列に移動する必要があります。

スタイル属性を使用して、ここでこの例に必要なCSSスタイルを定義していますが、実際に必要な場合を除き、インラインスタイルを使用することはお勧めしません。常にCSSクラスを使用してスタイルを追加してください。 次に、phpqueryメソッドを使用して、ヘッダーと偶数番号のある行を強調表示します。
<span><span><?php
</span></span><span><span>require("phpQuery/phpQuery.php");
</span></span><span><span>$doc = phpQuery<span>::</span>newDocument("<div/>");</span></span>
簡単な例を完成させました。これで、HTML Generation Server側を簡素化するためにPhpqueryを使用する方法を知っている必要があります。私たちがしたことはすべて、$ docオブジェクトに対してすべてのアクションを行ったことを除いて、jqueryで行われるのとほぼ同じです。
<span><span><?php
</span></span><span><span>...
</span></span><span><span>$doc["div"]->append("<ul><li>Product Name</li><li>Price</li></ul>");
</span></span><span><span>$products = array(
</span></span><span>    <span>array("Product 1","<span><span></span>"</span>),
</span></span><span>    <span>array("Product 2","<span><span></span>"</span>),
</span></span><span>    <span>array("Product 3","<span><span></span>"</span>));
</span></span><span>
</span><span><span>foreach($products as $key=>$product) {
</span></span><span>    <span>$doc["div ul"]->append("<li><span><span>$product[0]</span></li><li><span>$product[1]</span></li>"</span>);
</span></span><span><span>}
</span></span><span><span>print $doc;</span></span>
phpquery
<span><span><?php
</span></span><span><span>...
</span></span><span><span>$doc["div ul"]->attr("style", "width:420px;");
</span></span><span><span>$doc["div ul"]->find("li:even")->attr("style","width:200px; float:left; padding:5px; list-style:none;");
</span></span><span><span>$doc["div ul"]->find("li:odd")->attr("style","width:200px; float:left; padding:5px; list-style:none;");</span></span>
の重要性 Phpqueryの機能について説明しましたが、クライアント側にjQueryがあるときにライブラリが必要な理由を疑問に思う必要があります。実用的なシナリオを使用して、phpqueryの重要性を示します。 次の状況を考慮してください。次のようなテーブルがあると仮定します。これには、インタビューに行ったWeb開発者に関するすべての情報があります。
<span><span><?php
</span></span><span><span>...
</span></span><span><span>$doc["div ul"]->find("li:nth-child(4n)")->attr("style","background:#EEE; width:200px; float:left; padding:5px; list-style:none;");
</span></span><span><span>$doc["div ul"]->find("li:nth-child(4n-1)")->attr("style","background:#EEE; width:200px; float:left; padding:5px; list-style:none;");
</span></span><span><span>$doc["div ul"]->find("li:lt(1)")->attr("style","background:#CFCFCF; width:200px; float:left; padding:5px; list-style:none;");</span></span>

次に、このシナリオで開発する必要がある要件のリストを次に示します。
  • 試験のために60を超えるマークを取得した申請者は、青で強調表示されるべきです。
  • 3年以上の実務経験を持つ応募者は、「シニアソフトウェアエンジニアに申請する」というラベルのあるフロントにリンクを持つ必要があり、他の応募者には「ソフトウェアエンジニアに申請する」リンクが必要です。
  • 会社には経験に基づいた給与構造があります。
  • 1年 - $ 5,000
    • 2年 - $ 10,000
    • 3年 - $ 20,000
    • 3年以上 - $ 50,000
    • 給与列は、基準に一致する応募者のためにグリーンで強調表示されるべきです。
    これは、出力がどのように見えるかです。

開発者は、純粋なPHPコードを使用して要件を満たすために、次のソリューションを提供する場合があります。

<span><span><?php
</span></span><span><span>require("phpQuery/phpQuery.php");
</span></span><span><span>$doc = phpQuery<span>::</span>newDocument("<div/>");</span></span>
それでは、phpqueryを使用してそれを行い、コードと利点を比較しましょう。
<span><span><?php
</span></span><span><span>...
</span></span><span><span>$doc["div"]->append("<ul><li>Product Name</li><li>Price</li></ul>");
</span></span><span><span>$products = array(
</span></span><span>    <span>array("Product 1","<span><span></span>"</span>),
</span></span><span>    <span>array("Product 2","<span><span></span>"</span>),
</span></span><span>    <span>array("Product 3","<span><span></span>"</span>));
</span></span><span>
</span><span><span>foreach($products as $key=>$product) {
</span></span><span>    <span>$doc["div ul"]->append("<li><span><span>$product[0]</span></li><li><span>$product[1]</span></li>"</span>);
</span></span><span><span>}
</span></span><span><span>print $doc;</span></span>
すでにjqueryと協力することの知識があれば、phpqueryは簡単です。上記のコードのほとんどは自明です。ただし、PQ()は現在のドキュメントを指していることを言及したいと思います。他のすべてはjQuery機能です。 どちらも似ていますが、Phpqueryを使用するコードは、より良い品質と拡張性を提供します。後で追加の機能を追加する必要がある場合、元のコードがどれほど脆くなるかを考えてください。実務経験に基づいて、マークに追加の検証を追加したいと仮定します。そのシナリオでは、別のメソッドを追加し、foreachループ内に返された結果を割り当てる必要があります。つまり、既に書かれたコードを変更し、閉鎖された原則に違反する必要があります。
ソフトウェアエンティティ(クラス、モジュール、関数など)は、拡張機能のために開かれている必要がありますが、変更のために閉じている必要があります。
phpqueryを使用する2番目の例では、コードは最初に検証なしで生成され、次にテーブルを各関数に渡すと、変更が元のテーブルに配置されます。各関数は他の関数に影響しないため、新しい要件の新しい関数を記述し、他の関数とともにループの外側で使用できます。すでに既存のコードを変更していません。これは装飾と呼ばれます:
デコレーターパターンは、動作を既存のオブジェクトに動的に追加できるようにするデザインパターンです。
要約

このチュートリアルを開始し、Phpqueryの機能とその重要性を紹介しました。簡単な例を使用してphpqueryの使用方法を学んだ後、コードの品質を改善する上ではるかに重要になる実用的な例に移動しました。 Phpqueryは、サーバー側でHTMLを使用するための新しい視点を提供してくれました。さまざまな方法でPhpqueryを使用し、以下のコメントで個人的な経験を共有することを願っています。

phpqueryを使用したサーバー側のHTML処理に関するよくある質問

phpqueryとは何ですか?また、サーバー側のHTML処理にとって重要なのはなぜですか? PHP5で記述されており、サーバー側のHTML要素を処理する簡単な方法を提供します。これにより、開発者は、伝統的にクライアント側で行われていたHTMLドキュメントトラバーサルと操作、イベント処理、アニメーションなどのタスクを実行できます。これにより、Webアプリケーションのパフォーマンスとセキュリティが大幅に向上する可能性があります。

Phpqueryは、他のDOM操作ライブラリと比較しますか? jQuery構文のほとんどをサポートしているため、HTML要素を簡単に選択、操作、および通過できます。他のいくつかのライブラリとは異なり、phpqueryはチェーン可能です。つまり、単一のステートメントで複数のアクションをリンクできます。 Command Composer Reques Phpquery/Phpqueryを実行することにより、プロジェクトにphpqueryを追加できます。これにより、最新の安定したバージョンのphpqueryとその依存関係がダウンロードされ、インストールされます。たとえば、ドキュメント内のすべての段落を選択するには、$ doc ['p']を使用します。また、$ doc ['div.content> p']などのより複雑なセレクターを使用して、クラスの「コンテンツ」を持つDivの直接の子供であるすべての段落を選択することもできます。たとえば、コンテンツを挿入するには、append()、prepend()、after()、およびbefore()メソッドを使用できます。また、attributeの値を取得または設定するattr()メソッド、およびaddclass()、removeclass()、およびtoggleclass()メソッドを取得または設定することもできます。この方法を使用して、イベントハンドラーを要素に添付できます。たとえば、$ doc ['p'] - > bind( 'click'、function(){echo 'paragraph clicked!';}); 「段落がクリックされました!」段落がクリックされたときはいつでも。この方法では、非同期HTTP要求をサーバーに送信し、phpqueryを使用して応答を操作できます。この方法では、CSSプロパティを時間の経過とともに変更することでカスタムアニメーションを作成できます。これらの方法では、ドキュメント内の要素をナビゲートすることができます。

他のPHPライブラリでphpqueryを使用できますか?柔軟で相互運用可能になるように設計されているため、PHP開発者のツールキットに最適なツールになります。

以上がphpmaster | phpqueryを使用したサーバー側のHTML処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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