PHP için jQuery arayüzü gibi?

9 Cevap php

Özellikle jQuery tarzı selectors kullanılarak - Ben HTML / XML dosyaları işlemek için PHP için bir jQuery-stili arayüz / kitaplık orada var olup olmadığını merak ediyordum.

Ben (tüm hipotetik) bu gibi şeyler yapmak istiyorum:

foreach (j("div > p > a") as anchor) {
   // ...
}


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


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

Bunlar sadece birkaç örnektir.

Elimden kadar google'da ama ben aradığımı bulamadım. Bu satırlar boyunca bir şey varsa herkes biliyor, ya da bu ben domxml kullanarak sıfırdan kendim yapmak zorunda gidiyorum bir şey var mı?

9 Cevap

Biraz daha avcılık yaparken, ben arıyordum tam olarak ne bulduk düşünüyorum:

phpQuery - jQuery port to PHP

Teşekkürler cevaplar için herkes, ben kesinlikle diğer kullanımlar için bunları göz önünde tutacak.

PHP Simple HTML DOM Parser jQuery tarzı seçiciler kullanır. Örnekler documentation,

Modifying HTML elements:

// 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>

Scraping Slashdot:

// 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);

Soru eski ama ne gerek Query Path olduğunu.

XPath arıyoruz güven bana. Size bir örnek gösteriyorum

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

http://fluentdom.org/ başka bir alternatiftir.

PHP jQuery DOM manipülasyon yöntemlerini çoğaltan bir kitaplığı yazdı, ama o xpath değil jquery tarzı seçiciler kullanır. Aksi takdirde, hemen hemen aynı şekilde çalışır.

[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

simplexml belki? Onun sözdizimi jquery farklıdır, ama şaryo XML gerçekten kolay gelmez.

Ancak geçerli XML değil HTML için çalışmaz.

PHP'nin DOMDocument sınıfını kullanarak içine baktı mı?

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

Bu aradığınız tam olarak ne olduğunu, ancak çeşitli nitelikleri ve benzeri DOM manipülasyonu bir belgeyi aramak için izin vermez emin değil.

Modern bir çerçeve kullanıyorsanız, bu da kontrol etmelisiniz.

Bu bileşenler besteci üzerinden kurulabilir.