31

HTML/XML ファイルを処理するための PHP 用の jQuery スタイル インターフェイス/ライブラリが存在するかどうか、特に jQuery スタイルセレクターを使用するかどうかについて興味がありました。

私はこのようなことをしたいと思います(すべて仮説です):

foreach (j("div > p > a") をアンカーとして) {
   // ...
}


print j("#some_id")->html();


print j("a")->eq(0)->attr("名前");

これらはほんの一例です。

私はできる限り多くのグーグルをしましたが、探しているものを見つけることができませんでした. これらの線に沿ったものが存在するかどうかを誰かが知っていますか、それともdomxmlを使用して自分でゼロから作成する必要がありますか?

4

12 に答える 12

37

PHP Simple HTML DOM Parserは、jQuery スタイルのセレクターを使用します。ドキュメントの例:

HTML 要素の変更:

// Create DOM from string
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');

$html->find('div', 1)->class = 'bar';

$html->find('div[id=hello]', 0)->innertext = 'foo';

echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>

スラッシュドットのスクレイピング:

// Create DOM from URL
$html = file_get_html('http://slashdot.org/');

// Find all article blocks
foreach($html->find('div.article') as $article) {
    $item['title']     = $article->find('div.title', 0)->plaintext;
    $item['intro']    = $article->find('div.intro', 0)->plaintext;
    $item['details'] = $article->find('div.details', 0)->plaintext;
    $articles[] = $item;
}

print_r($articles);
于 2009-09-01T19:38:02.720 に答える
25

もう少し探してみると、探していたものを正確に見つけたかもしれません。

phpQuery - PHP への jQuery ポート

皆さんの回答に感謝します。他の用途のためにそれらを心に留めておきます。

于 2009-09-01T19:46:22.407 に答える
11

質問は古いですが、必要なのはQuery Pathです。

于 2011-10-10T23:17:16.087 に答える
5

あなたが xPath を探していると信じてください。例を示しています

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
$dom = new DOMDocument;
libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile('http://somewhereinblog.net');

libxml_clear_errors();

$xPath = new DOMXPath($dom);
$links = $xPath->query('//h1//a'); //This is xPath. Really nice and better than anything
foreach($links as $link) {
    printf("<p><a href='%s'>%s</a></p>\n", $link->getAttribute('href'), $link->nodeValue);
}
?>
于 2012-10-05T20:08:09.810 に答える
2

http://fluentdom.org/は別の選択肢です。

于 2009-09-01T22:00:01.297 に答える
2

HtmlPageDomは Symfony の DOM Crawler を拡張し、jQuery のような DOM 操作関数を追加します。

于 2014-12-10T11:25:46.920 に答える
2

PHP で jQuery の DOM 操作メソッドを複製するライブラリを作成しましたが、jquery スタイル セレクターではなく xpath を使用します。それ以外の場合は、ほとんど同じように機能します。

[http://pxtreme.sourceforge.net][1]

$doc = px("index.html"); // Create a px Object
$headings=$doc->xpath("/html/body/h2"); // Select Elements to Manipulate
$headings->addClass("NewLook"); // Change their Appearance
px("index.html")->xpath("//h2")->addClass("NewLook"); // All in One Line

// use anonymous functions in PHP 5.3
$doc->xpath("//p")->each( function ($pxObject, $index) {
  $str = $pxObject->get($index)->text();
  if (mb_strpos($str, "pxtreme"))
   $px->attr("title", "Check out this paragraph!");
});

http://pxtreme.sourceforge.net

于 2010-11-21T15:58:05.107 に答える
0

PHP の DOMDocument クラスの使用を調べましたか?

http://us2.php.net/manual/en/book.dom.php

これがまさにあなたが探しているものかどうかはわかりませんが、さまざまな属性やその他の DOM 操作によるドキュメントの検索が可能です。

于 2009-09-01T19:16:30.830 に答える
0

最新のフレームワークを使用している場合は、これらもチェックしてください。

これらのコンポーネントは、composer を介してインストールできます。

于 2013-11-29T08:59:49.973 に答える
0

おそらくsimplexml?その構文は jquery とは異なりますが、XML のトラバースが非常に簡単になります。

ただし、有効な XML ではない HTML では機能しません。

于 2009-09-01T19:14:26.513 に答える