Berlioz HTMLセレクター
Berlioz HTMLセレクターは、 domのjqueryなどのCSSセレクターを使用してHTMLファイルでクエリを実行するPHPライブラリです。
インストール
作曲家
ComposerとBerlioz HTMLセレクターをインストールできます。これは推奨されるインストールです。
$ composer require berlioz/html-selector
依存関係
- php ^8.0
- PHPライブラリ:
- dom
- libxml
- MbString
- simplexml
使用法
HTMLをロードします
html文字列またはファイルを静的関数HtmlSelector::query()で簡単にロードできます。ファイルには、メソッドの2番目のパラメーターcontentsIsFileを使用します。
$ htmlSelector = new Berlioz HtmlSelector HtmlSelector ();
$ query = $ htmlSelector -> query ( ' <html><body>...</body></html> ' );
$ query = $ htmlSelector -> query ( ' path-of-my-file/file.html ' , contentsIsFile: true );
$ query = $ htmlSelector -> query ( new SimpleXMLElement ( /*...*/ ));
ResponseInterfaceからロードします
HtmlSelector::queryFromResponse()応答本体のHTMLのロードを許可します。
$ htmlSelector = new Berlioz HtmlSelector HtmlSelector ();
/** @var PsrHttpMessageResponseInterface $response */
$ query = $ htmlSelector -> queryFromResponse ( $ response );
クエリを行います
jQueryのようなセレクターを使用してHTML文字列をクエリするのは非常に簡単です。
/** @var BerliozHtmlSelectorQueryQuery $query */
$ query = $ query -> find ( ' body > .wrapper h2 ' );
$ query = $ query -> filter ( ' :first ' );
セレクター
CSSシンプルなセレクター
- タイプ:タイプの要素の選択。
- #ID :IDを使用した要素の選択。
- 。クラス:クラスを使用した要素の選択。
- 属性の選択。
- [属性] :属性「属性」を使用。
- [属性= foo] :属性の値は「foo」に等しくなります。
- [属性^= foo] :属性の値は「foo」で始まります。
- [属性$ = foo] :属性の値は「foo」で終わります。
- [属性= foo] *:属性の値には 'foo'が含まれます。
- [属性!= foo] :「foo」の属性の値。
- [属性〜= foo] :属性の値には「foo」という単語が含まれます。
- [属性| = foo] :属性の値には、プレフィックス「foo」が含まれます。
CSSアセンダント、子孫、倍数
- セレクターセレクターまたはセレクター>>セレクター:すべての子孫セレクター。
- Selector > Selector :Direct Descendantセレクター(子供のみ)。
- セレクター〜セレクター:兄弟セレクター。
- セレクター、セレクター:複数のセレクター。
CSS疑似クラス
- :any(selector、selector) :引数で与えられた要素のみ。
- :any-link :
[href]属性を備えた<a> 、 <area> 、 <link>の要素のみ。 - :flank :子供のない要素とテキストなし(スペースを除く)。
- :checked :属性を持つ要素のみ
[checked] 。 - :dir :指示されたテキストが与えられた要素のみ(デフォルト:LTR)。
- :disabled :
<button> 、 <input> 、 <optgroup> 、 <select> 、または<textarea> with [disabled]属性の要素のみ。 - :空:子供のない要素のみ。
- :有効:
<button> 、 <input> 、 <optgroup> 、 <option> 、 <select> 、 <textarea> 、 <menuitem> 、または<fieldset>の[disabled]のない要素のみ。 - :最初:完全な選択の最初の結果のみ。
- :First-Child :親の子供だけを最初に。
- :First-of-Type :両親の最初のタイプのみ。
- :has(selector、selector) :有効な子セレクターのみ。
- :lang(x) :
[lang]を持つ要素のみが、与えられた値によって接頭辞または等しくなります。 - :last-child :両親にのみ持続します。
- :Typeのlast :両親の違いは持続します。
- :not(selector、selector) :「not」をフィルターします。
- :nth-child() :nセレクター結果のn要素。
- :nth-last-child() : nセレクターの結果の要素は、リストの最後から開始します。
- :nth-of-type() :nセレクター結果の指定されたタイプのn要素。
- :nth-last-of-type() : nセレクター結果の指定されたタイプの要素は、リストの最後から開始します。
- :唯一の子供:親の唯一の子供である要素のみ。
- :唯一のタイプ:親の型型子のみである要素のみ。
- :optional() :
[required]属性のない入力要素のみ。 - :read-only() :ユーザーが編集できない要素のみ。
- :read-write() :編集可能なプロパティを持つ要素のみ。
- :必須() :
[required]属性を持つ要素のみ。 - :root() :ルート要素を取得します。
jQueryライブラリからの追加のCSS疑似クラス(CSS仕様ではない)
- :ボタン:属性値
[type=submit]または<input type="button">なしのタイプ<button>の要素のみ。 - :チェックボックス:属性を持つ要素のみ
[type=checkbox] 。 - :contains(x) :指定されたテキストを含む要素のみ。
- :eq(x) :インデックスが与えられた(インデックス開始0)の場合のみ。
- :偶数:選択をもたらすだけです。
- :file :属性を持つ要素のみ
[type=file] 。 - :gt(x) :インデックスが指定されたインデックスが大きい(インデックス開始0から0)。
- :GTE :インデックスが与えられたインデックス以上のインデックス(インデックス開始0から0)のみの結果。
- :ヘッダー:
<h1> 、 <h2>のような見出しの唯一の要素... - :画像:属性を持つ要素のみ
[type=image] 。 - :入力:
<input> 、 <textarea> 、 <select> 、または<button>の要素のみ。 - :最後:完全な選択の最後の結果のみ。
- :lt :指定されたインデックスよりもインデックスレザーでのみ結果が与えられます(インデックス開始0から0)。
- :LTE :指定されたインデックス以下のインデックスレザーでのみ結果が与えられます(インデックス開始0から0)。
- :ODD :ODDのみの結果が選択されます。
- :親:1人以上の要素のみ。
- :パスワード:属性を持つ要素のみ
[type=password] 。 - :無線:属性を持つ要素のみ
[type=radio] 。 - :リセット:属性を持つ要素のみ
[type=reset] 。 - :selected :属性
[selected]を備えたタイプ<option>オプション>の要素のみ。 - :送信:属性
[type=submit]を使用したタイプ<button>または<input>の要素のみ。 - :テキスト:属性
[type=text]または[type]属性を持つタイプ<input>のみ。
追加のCSS疑似クラス(CSS仕様ではありません)
- :count(x) :親のxの子供である要素のみが使用されています。
セレクターの完全な例
select > option:selected
div#myId.class1.class2[name1=value1][name2=value2]:even:first
関数
デフォルト機能
一部のデフォルト関数は、結果と対話するためにクエリオブジェクトで利用可能です。関数は、jQueryのカウンターパートと同じ結果を得る必要があります。
- attr(name) :属性値を取得します
- attr(name、value) :属性値を設定します
- 子供() :結果の要素の子供を取得します。
- count() :クエリ結果の要素の数をカウントします。
- data(nameofdata) :データ値を取得します(名前は「data-」プレフィックスなしではcamelcase構文を使用します)。
- フィルター(セレクター) :結果のフィルター要素。
- find(selector) :結果の要素でセレクターを検索します。
- get(i) :結果でdom要素を取得します。
- hasclass(class_name) :結果の少なくとも1つの要素がクラスを与えているかどうかを知っています。
- HTML() :結果の最初の要素のHTMLを取得します。
- index(selector) :結果要素で指定されたセレクターのインデックスを取得します。
- is(selector) :selectorが結果の最小1つの要素を有効にするかどうかを知ります。
- ISSET(i) :booleanを返して、結果に要素キーが存在するかどうかを知ります。
- next(selector) :結果の各要素の後に次の要素を取得します。
- nextall(selector) :結果の各要素の後にすべての次の要素を取得します。
- not(selector) :結果のフィルター要素。
- 親() :選択の現在の結果の直接の親を取得します。
- 親(セレクター) :選択の現在の結果のすべての親を取得します。
- prev(selector) :結果の各要素の後に前の要素を取得します。
- prevall(selector) :結果の各要素の後にすべての前の要素を取得します。
- prop(name) :
disabled属性に使用される属性のプロパティブール値を取得します。 - prop(name、value) :
disabled属性に使用される属性のプロパティブール値を設定します。 - serialize() :フォームの入力値をシリアル化します。文字列を返します。
- serializearray() :フォームの入力値をシリアル化します。配列を返します。
- text() :連結された各要素のテキストを取得します。
- val() :フォーム要素の値を取得します。