Подтвердить что ты не робот

JQuery-подобный интерфейс для PHP?

Мне было любопытно, существует ли интерфейс/библиотека jQuery-стиля для PHP для обработки файлов HTML/XML - особенно с использованием стиля jQuery selectors.

Я хотел бы делать такие вещи (все гипотетические):

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


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


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

Это всего лишь несколько примеров.

Я сделал столько же, сколько мог, но не смог найти то, что искал. Кто-нибудь знает, существует ли что-то в этих строках, или это то, что мне придется делать с нуля, используя domxml?

4b9b3361

Ответ 1

Сделав еще одну охоту, я думаю, что нашел именно то, что искал:

phpQuery - порт jQuery для PHP

Спасибо всем за ваши ответы, я обязательно буду помнить их для других целей.

Ответ 2

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>

Скребок 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);

Ответ 3

Вопрос старый, но вам нужно Query Path.

Ответ 4

Поверьте мне, вы ищете 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);
}
?>

Ответ 6

Я написал библиотеку, которая дублирует методы манипуляции JQuery DOM в PHP, но использует xpath, а не селектор стиля jquery. В противном случае он работает почти так же.

[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

Ответ 7

HtmlPageDom расширяет поисковый робот Symfony DOM и добавляет функции манипуляции с DQ-функциями, подобными jQuery.

Ответ 8

моя альтернатива https://github.com/gymadarasz/xparser

быстрый и простой в использовании, пример:

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

Ответ 9

Лучший, который я нашел, - https://github.com/scotteh/php-dom-wrapper

Он работает так же, как jQuery, и он быстро.

Я попробовал много библиотек из других ответов, но мне не удавалось легко переносить манипуляции, которые я делал в jQuery. С этим это был легкий ветерок. Думаю, это скоро станет популярнее...

Ответ 10

simplexml возможно? Его синтаксис отличается от jquery, но он действительно облегчает перемещение XML.

Однако он не будет работать для HTML, который не является допустимым XML.

Ответ 11

Вы изучали использование класса PHP DOMDocument?

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

Не уверен, что это именно то, что вы ищете, но оно позволяет искать документ по различным атрибутам и другие подобные манипуляции с DOM.