web-dev-qa-db-ja.com

PHP用のjQueryのようなインターフェース?

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

私はこのようなことをしたいです(すべて架空のものです):

[。 。] print j( "#some_id")-> html(); 
 
 
 print j( "a")-> eq(0)-> attr( "name "); 

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

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

31
theotherlight

もう少し狩りをして、私が探していたものを正確に見つけたかもしれないと思います:

phpQuery --PHPへのjQueryポート

あなたの答えをみんなに感謝します、私は間違いなく他の用途のためにそれらを心に留めておきます。

24
theotherlight

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);
35
karim79

質問は古いですが、必要なのは クエリパス です。

11
ali

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);
}
?>
5
FlatLander

私が見つけた最高のものは https://github.com/scotteh/php-dom-wrapper

JQueryと非常によく似ており、高速です。

他の回答から多くのライブラリを試しましたが、jQueryで行っていた操作を簡単に移植することができませんでした。これでそれはそよ風でした。もうすぐ人気になると思います...

4
Jesús Carrera

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

2
Justin

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

2
wasinger

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

2
Troy Hirni

私の代替案は https://github.com/gymadarasz/xparser

速くて使いやすい、例:

$x('#nav a', function($elem) {
  $elem->href = '//myurl/' . $elem->href;
});
1
Gyula Madarasz

最新のフレームワークを使用している場合は、これらも確認する必要があります。

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

0
HarryFink

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

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

0
Anti Veeranna

PHPのDOMDocumentクラスの使用を検討しましたか?

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

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

0
Johrn