DomQuery
v1.1
DOMQUERY는 DOM (HTML/XML)을 쉽게 통과하고 수정할 수있는 PHP 라이브러리입니다. 라이브러리로서 PHP Domdocument 클래스 (http://php.net/manual/en/book.dom.php)에 대한 'jQuery like'액세스를 제공하는 것을 목표로합니다.
최신 버전을 설치하십시오
$ 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]) JS/JQuery가 아닌 PHP의 Array_Slice와 같습니다..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] )* [Content] 는 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 요소는 "Next"와 일치하는 형제 자매 "이전"이 바로 앞에 있습니다.prev ~ siblings 요소* 모든 선택기[name="foo"] 속성 값 동일한 foo[name*="foo"] 속성 값에는 foo가 포함됩니다[name~="foo"] 속성 값에는 단어 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):has(foo):contains(foo) 요소가 포함되어 있습니다:root 요소 findOrFail( selector ) 현재 일치하는 요소 세트에서 각 요소의 후손을 찾거나 예외를 던집니다.loadContent(content, encoding='UTF-8') 로드 html/xml 컨텐츠xpath(xpath_query) xpath를 사용하여 현재 일치하는 요소 세트에서 각 요소의 후손을 찾으십시오.getOuterHtml() 모든 요소 (string) $dom 또는 $elm->prop('outerHTML') )를 설명하는 HTML 결과 Get get get get get html. xml_mode true로 설정됩니다)xml_mode False로 설정할 수 있습니다.xml_mode False로 설정 한 다음 loadContent($content) 메소드를 사용할 수 있습니다.셀렉터에서 메타 숯을 피하기 위해 네임 스페이스가있는 요소를 찾으십시오.
$ dom -> find ( ' namespace \ :h1 ' )-> text ();