DomQuery
v1.1
DomQuery เป็นไลบรารี PHP ที่ช่วยให้คุณข้ามและแก้ไข DOM (HTML/XML) ได้อย่างง่ายดาย ในฐานะที่เป็นห้องสมุดมีจุดมุ่งหมายเพื่อให้ 'jQuery Like' เข้าถึงคลาส PHP Domdocument (http://php.net/manual/en/book.dom.php)
ติดตั้งเวอร์ชันล่าสุดด้วย
$ composer require rct567/dom-query use Rct567 DomQuery DomQuery ;
$ dom = new DomQuery ( ' <div><h1 class="title">Hello</h1></div> ' );
echo $ dom -> find ( ' h1 ' )-> text (); // output: Hello
echo $ dom -> find ( ' div ' )-> prop ( ' outerHTML ' ); // output: <div><h1 class="title">Hello</h1></div>
echo $ dom -> find ( ' div ' )-> html (); // output: <h1 class="title">Hello</h1>
echo $ dom -> find ( ' div > h1 ' )-> class ; // output: title
echo $ dom -> find ( ' div > h1 ' )-> attr ( ' class ' ); // output: title
echo $ dom -> find ( ' div > h1 ' )-> prop ( ' tagName ' ); // output: h1
echo $ dom -> find ( ' div ' )-> children ( ' h1 ' )-> prop ( ' tagName ' ); // output: h1
echo ( string ) $ dom -> find ( ' div > h1 ' ); // output: <h1 class="title">Hello</h1>
echo count ( $ dom -> find ( ' div, h1 ' )); // output: 2 use Rct567 DomQuery DomQuery ;
$ dom = new DomQuery ( ' <a>1</a> <a>2</a> <a>3</a> ' );
$ links = $ dom -> children ( ' a ' );
foreach ( $ links as $ elm ) {
echo $ elm -> text (); // output 123
}
echo $ links [ 0 ]-> text (); // output 1
echo $ links -> last ()-> text (); // output 3
echo $ links -> first ()-> next ()-> text (); // output 2
echo $ links -> last ()-> prev ()-> text (); // output 2
echo $ links -> get ( 0 )-> textContent ; // output 1
echo $ links -> get (- 1 )-> textContent ; // output 3 use Rct567 DomQuery DomQuery ;
DomQuery:: create ( ' <a title="hello"></a> ' )-> attr ( ' title ' ) // hello .find( selector ).children( [selector] ).parent( [selector] ).closest( [selector] ).next( [selector] ).prev( [selector] ).nextAll( [selector] ).prevAll( [selector] ).nextUntil( [selector] ).prevUntil( [selector] ).siblings( [selector] ) .contents() รับเด็กรวมถึงโหนดข้อความ.add( selector, [context] ) ผลลัพธ์ใหม่พร้อมองค์ประกอบที่เพิ่มเข้ามาตรงกับตัวเลือก.addBack() .is( selector ).filter ( selector ) ลดลงสำหรับผู้ที่ตรงกับตัวเลือก.not( selector ) ลบองค์ประกอบออกจากชุดขององค์ประกอบที่ตรงกัน.has( selector ) ลดลงสำหรับผู้ที่มีลูกหลานที่ตรงกับตัวเลือก.first( [selector] ).last( [selector] ).slice( [offset] [, length]) เช่น array_slice ใน php ไม่ใช่ js/jQuery.eq( index ).map( callable(elm,i) )* [ตัวเลือก] สามารถเป็นตัวเลือก CSS หรืออินสแตนซ์ของ Domquery | Domnodelist | Domnode
.text( [text] ).html( [html_string] ).append( [content],... ).prepend( [content],... ).after( [content],... ).before( [content],... ).appendTo( [target] ).prependTo( [target] ).replaceWith( [content] ).wrap( [content] ).wrapAll( [content] ).wrapInner( [content] ).remove( [selector] )* [เนื้อหา] สามารถเป็น html หรืออินสแตนซ์ของ domquery | domnodelist | domnode
.attr( name [, val] ).prop( name [, val] ).css( name [, val] ).removeAttr( name ).addClass( name ).hasClass( name ).toggleClass ( name ).removeClass( [name] )* AddClass, RemoveClass, Toggleclass และ RemoveAttr ยังยอมรับ ชื่อ อาร์เรย์หรืออาร์เรย์ที่คั่นด้วยพื้นที่
.get( index ).each ( callable(elm,i) ).data ( key [, val] ).removeData ( [name] ).index ( [selector] ).toArray().clone() .class#fooparent > childfoo, bar ตัวเลือกหลายตัวprev + next ที่ตรงกับ "ถัดไป" ที่นำหน้าทันทีโดยพี่น้อง "prev"prev ~ siblings ที่ตรงกับ "พี่น้อง" ที่นำหน้าด้วย "prev"* ตัวเลือกทั้งหมด[name="foo"] ค่าแอตทริบิวต์เท่ากับ foo[name*="foo"] ค่าแอตทริบิวต์มี foo[name~="foo"] ค่าแอตทริบิวต์มี word foo[name^="foo"] ค่าแอตทริบิวต์เริ่มต้นด้วย foo[name$="foo"] ค่าแอตทริบิวต์ลงท้ายด้วย foo[name|="foo"] ค่าแอตทริบิวต์เท่ากับ foo หรือเริ่ม foo ตามด้วยยัติภังค์ (-):empty:even:odd:first-child:last-child:only-child:nth-child(n):parent ที่มีโหนดลูกอย่างน้อยหนึ่งโหนด:first:last:header เลือก H1, H2, H3 เป็นต้น:not(foo) ที่ไม่ตรงกับตัวเลือก foo:has(foo) ที่มีองค์ประกอบอย่างน้อยหนึ่งองค์ประกอบที่ตรงกับตัวเลือก foo:contains(foo) ที่มีข้อความ foo:root นั่นคือรูทของเอกสาร findOrFail( selector ) ค้นหาลูกหลานของแต่ละองค์ประกอบในชุดองค์ประกอบที่ตรงกันหรือไม่loadContent(content, encoding='UTF-8') โหลดเนื้อหา HTML/XMLxpath(xpath_query) ใช้ XPATH เพื่อค้นหาลูกหลานของแต่ละองค์ประกอบในชุดองค์ประกอบที่ตรงกันปัจจุบันgetOuterHtml() รับผลลัพธ์ html อธิบายองค์ประกอบทั้งหมด (เช่นเดียวกับ (string) $dom หรือ $elm->prop('outerHTML') ) xml_mode จะถูกตั้งค่าเป็น TRUE)xml_mode เป็นเท็จเพื่อป้องกันสิ่งนี้xml_mode เป็น FALSE จากนั้นใช้วิธี loadContent($content)การหลบหนี Meta Chars ในตัวเลือกเพื่อค้นหาองค์ประกอบที่มีเนมสเปซ:
$ dom -> find ( ' namespace \ :h1 ' )-> text ();