2009-09-01 9 views
27

मैं उत्सुक था कि एचटीएमएल/एक्सएमएल फाइलों को संभालने के लिए PHP के लिए एक jQuery-style इंटरफ़ेस/लाइब्रेरी मौजूद है या नहीं - विशेष रूप से jQuery शैली selectors का उपयोग कर।jQuery जैसी इंटरफ़ेस?

मैं इस तरह बातें (सभी काल्पनिक) क्या करना चाहते हैं:

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


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


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

ये सिर्फ कुछ उदाहरण हैं।

मैंने जितना संभव हो उतना गुगलिंग किया लेकिन मैं जो खोज रहा था उसे नहीं मिला। क्या किसी को पता है कि इन पंक्तियों के साथ कुछ मौजूद है, या यह कुछ है जो मुझे domxml का उपयोग करके खुद को खरोंच से बनाना है?

+2

आप वास्तव में CSS3 और XPATH शैली चयनकर्ताओं की तलाश में हैं। JQuery और अन्य जेएस पुस्तकालय उन मानकीकृत एक्सएमएल चयनकर्ताओं पर आधारित हैं। – bucabay

+0

PHP के लिए सबसे अद्यतित jQuery https://github.com/technosophos/querypath – Petah

उत्तर

22

कुछ और शिकार करने से, मुझे लगता है कि मैंने पाया हो सकता है मैं ठीक क्या था खोज रहे हैं:

phpQuery - jQuery port to PHP

आपके उत्तरों के लिए सभी को धन्यवाद, मैं निश्चित रूप से उन्हें अन्य उपयोगों के लिए ध्यान में रखूंगा।

+0

यदि phpQuery आपके प्रश्न का उत्तर देता है तो आपको इसे उत्तर के रूप में चिह्नित करना चाहिए। – karim79

+0

मैंने पहले से ही कोशिश की है, मुझे 2 दिनों तक इंतजार करना होगा जब तक कि मैं अपना जवाब स्पष्ट रूप से स्वीकार नहीं कर सकता। – theotherlight

+3

अरे क्या मैं पूछ सकता हूं कि आपने phpQuery और QueryPath के बीच कैसे निर्णय लिया? मैं एक चुनना चाहता हूँ। – Webinan

0

simplexml शायद? इसका वाक्यविन्यास jquery से अलग है, लेकिन यह एक्सएमएल को वास्तव में आसान बनाता है।

हालांकि यह HTML के लिए काम नहीं करेगा जो वैध XML नहीं है।

0

क्या आपने PHP की DOMDocument क्लास का उपयोग करने में देखा है?

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

सुनिश्चित नहीं हैं कि अगर यह आप के लिए वास्तव में क्या देख रहे हैं, लेकिन यह विभिन्न विशेषताओं, और अन्य ऐसी डोम हेरफेर से एक दस्तावेज़ की खोज करने की अनुमति मिल जाती है।

30

PHP Simple HTML DOM Parser jQuery-शैली चयनकर्ताओं का उपयोग करता है।

संशोधित करना HTML तत्वों: documentation से उदाहरण

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

मैंने एक लाइब्रेरी लिखी है जो PHP में jQuery के डोम मैनिपुलेशन विधियों को डुप्लिकेट करता है, लेकिन यह 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

12

सवाल पुराना है लेकिन क्या आप की जरूरत Query Path है।

+0

PHP के लिए सबसे अच्छा, और सबसे अद्यतित jQuery! – Petah

+2

यह निश्चित रूप से एक अच्छा समाधान है और इसे PHP इंस्टॉल – Eva

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

HtmlPageDom सिम्फनी के डोम क्रॉलर को बढ़ाता है और jQuery जैसी डीओएम मैनिपुलेशन फ़ंक्शन जोड़ता है।

+0

पर कुछ भी करने की आवश्यकता नहीं है, यह अधिक समझ में आता है क्योंकि यह DOM पढ़ने के लिए एक अद्यतन घटक का उपयोग करता है। – kzap

+0

यह बहुत अच्छा काम करता है –

1

मेरी विकल्प https://github.com/gymadarasz/xparser

तेजी से और आसानी से इस्तेमाल, एक उदाहरण है:

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

सबसे अच्छा एक मैंने पाया https://github.com/scotteh/php-dom-wrapper

यह jQuery के रूप में बहुत इसी तरह काम करता है, और यह तेजी से होता है ।

मैंने कई उत्तरों से कई पुस्तकालयों की कोशिश की, लेकिन मैं आसानी से jQuery में कर रहे मैनिप्ल्यूशंस को बंद करने का प्रबंधन नहीं करता था। इस के साथ यह एक हवा था। मुझे लगता है कि यह जल्द ही और अधिक लोकप्रिय हो जाएगा ...

संबंधित मुद्दे