PHP'de HTML / XML'i nas─▒l ayr─▒┼čt─▒r─▒r ve i┼člersiniz?


Al─▒nan cevaba git


HTML / XML nas─▒l ayr─▒┼čt─▒r─▒labilir ve ondan bilgi nas─▒l ├ž─▒kar─▒labilir?


2063









Cevap say─▒s─▒n─▒ say: 30






Yerel XML Uzant─▒lar─▒

PHP ile birlikte geldiklerinden yerel XML uzant─▒lar─▒ndan birini kullanmay─▒ tercih ediyorum , genellikle 3. parti k├╝t├╝phanelerden daha h─▒zl─▒lar ve i┼čaretleme konusunda ihtiyac─▒m olan t├╝m kontrolleri bana veriyorlar.

DOM

DOM eklentisi, PHP 5 ile DOM API ├╝zerinden XML belgelerinde ├žal─▒┼čman─▒za izin verir. PHP ve W3C'nin Program ve komut dosyalar─▒n─▒n dinamik olarak eri┼čmesini ve g├╝ncellenmesini sa─člayan platform ve dil-tarafs─▒z bir aray├╝z olan Belge Nesne Modeli Temel D├╝zey 3'├╝n bir uygulamas─▒d─▒r. belgelerin i├žeri─či, yap─▒s─▒ ve tarz─▒.

DOM, ger├žek d├╝nyadaki (bozuk) HTML'yi ayr─▒┼čt─▒rma ve de─či┼čtirme yetene─čine sahiptir ve XPath sorgular─▒ yapabilir . Libxml tabanl─▒d─▒r .

DOM ile ├╝retken olmak biraz zaman al─▒r, ancak bu zaman buna de─čer IMO. DOM, dille uyumlu bir aray├╝z oldu─čundan, bir├žok dilde uygulamalar─▒ bulacaks─▒n─▒z, bu nedenle programlama dilinizi de─či┼čtirmeniz gerekirse, o dilin DOM API'sini nas─▒l kullanaca─č─▒n─▒z─▒ zaten bileceksiniz.

Temel bir kullan─▒m ├Ârne─či, bir A ├Â─česinin href niteli─čini alma b├Âl├╝m├╝nde bulunabilir ve genel bir genel bak─▒┼č, php i├žindeki DOMDocument adresinde bulunabilir.https://stackoverflow.com/questions/4979836/noob-question-about-domdocument-in-php/4983721%234983721#4983721

DOM uzant─▒s─▒n─▒n kullan─▒m─▒ StackOverflow'ta kapsaml─▒ bir ┼čekilde ele al─▒nm─▒┼čt─▒r , bu y├╝zden kullanmay─▒ se├žerseniz, kar┼č─▒la┼čt─▒─č─▒n─▒z sorunlar─▒n ├žo─čunun Y─▒─č─▒n Ta┼čmas─▒'n─▒ arayarak / tarayarak ├ž├Âz├╝lebilece─činden emin olabilirsiniz.

XMLReader

XMLReader uzant─▒s─▒ bir XML ├žekme ayr─▒┼čt─▒r─▒c─▒s─▒d─▒r. Okuyucu, belge ak─▒┼č─▒nda ileri do─čru ilerleyen ve yoldaki her d├╝─č├╝mde durdu─ču bir imle├ž g├Ârevi g├Âr├╝r.

DOM gibi XMLReader libxml tabanl─▒d─▒r. HTML Ayr─▒┼čt─▒r─▒c─▒ Mod├╝l├╝n├╝ nas─▒l tetikleyece─čimin fark─▒nda de─čilim, bu nedenle k─▒r─▒k HTML'yi ayr─▒┼čt─▒rmak i├žin XMLReader kullanma ┼čans─▒, libxml'nin HTML Ayr─▒┼čt─▒r─▒c─▒ Mod├╝l├╝n├╝ kullanmas─▒n─▒ a├ž─▒k├ža s├Âyleyebilece─činiz DOM kullanmaya g├Âre daha az g├╝├žl├╝ olabilir.

Php kullanarak h1 etiketlerinden t├╝m de─čerleri alma konusunda temel bir kullan─▒m ├Ârne─či bulunabilir.https://stackoverflow.com/questions/3299033/getting-all-values-from-h1-tags-using-php/3299140%233299140#3299140

XML Ayr─▒┼čt─▒r─▒c─▒

Bu uzant─▒, XML ayr─▒┼čt─▒r─▒c─▒lar─▒ olu┼čturman─▒za ve ard─▒ndan farkl─▒ XML olaylar─▒ i├žin i┼čleyiciler tan─▒mlaman─▒za olanak tan─▒r. Her XML ayr─▒┼čt─▒r─▒c─▒s─▒n─▒n ayarlayabilece─činiz birka├ž parametresi vard─▒r.

XML Ayr─▒┼čt─▒r─▒c─▒ k├╝t├╝phanesi ayr─▒ca libxml tabanl─▒d─▒r ve SAX tarz─▒ bir XML push ayr─▒┼čt─▒r─▒c─▒ uygular . Bellek y├Ânetimi i├žin DOM veya SimpleXML'den daha iyi bir se├žim olabilir, ancak XMLReader taraf─▒ndan uygulanan ├žekme ayr─▒┼čt─▒r─▒c─▒s─▒ndan ├žal─▒┼čmak daha zor olacakt─▒r.

SimpleXML

SimpleXML uzant─▒s─▒, XML'yi normal ├Âzellik se├žicileri ve dizi yineleyicilerle i┼členebilecek bir nesneye d├Ân├╝┼čt├╝rmek i├žin ├žok basit ve kolay kullan─▒labilir bir ara├ž seti sa─člar.

SimpleXML, HTML'nin XHTML'nin ge├žerli oldu─čunu bildi─činiz bir se├ženektir. Bozuk HTML'yi ayr─▒┼čt─▒rman─▒z gerekirse, bo─čulaca─č─▒ndan SimpleXml bile d├╝┼č├╝nmeyin.

Temel bir kullan─▒m ├Ârne─či bulunabilir xml dosyas─▒n─▒n CRUD d├╝─č├╝m ve d├╝─č├╝m de─čerleri basit bir program─▒ ve orada Manuel PHP ek ├Ârnekler ├žok .


3. Parti K├╝t├╝phaneleri (libxml tabanl─▒)

├ť├ž├╝nc├╝ taraf bir lib kullanmay─▒ tercih ederseniz , dize ayr─▒┼čt─▒rma yerine altta DOM / libxml kullanan bir lib kullanman─▒z─▒ ├Âneririm .

FluentDom - Repo

FluentDOM, PHP'deki DOMDocument i├žin jQuery benzeri bir ak─▒c─▒ XML arabirimi sa─člar. Se├žiciler XPath veya CSS dilinde yaz─▒lm─▒┼čt─▒r (XPath d├Ân├╝┼čt├╝r├╝c├╝s├╝ne CSS kullanarak). Mevcut s├╝r├╝mler, DOM'yi uygulayan standart aray├╝zleri geni┼čletir ve DOM Ya┼čam Standard─▒'ndan ├Âzellikler ekler. FluentDOM, JSON, CSV, JsonML, RabbitFish ve di─čerleri gibi formatlar─▒ y├╝kleyebilir. Composer arac─▒l─▒─č─▒yla kurulabilir.

HtmlPageDom

Wa72 \ HtmlPageDom`, HTML belgelerinin kolay manip├╝lasyonu i├žin bir PHP k├╝t├╝phanesidir ve DOM a─čac─▒n─▒ gezdirmek i├žin Symfony2 bile┼čenlerinden DomCrawler gerektirir ve HTML belgelerinin DOM a─čac─▒n─▒ i┼člemek i├žin y├Ântemler ekleyerek geni┼čletir.

phpQuery (y─▒llarca g├╝ncellenmez)

phpQuery, PHP5'te yaz─▒lm─▒┼č ve ek Komut Sat─▒r─▒ Arabirimi (CLI) sa─člayan, jQuery JavaScript Kitapl─▒─č─▒ tabanl─▒ bir sunucu taraf─▒, zincirlenebilir, CSS3 se├žici odakl─▒ Belge Nesne Modeli (DOM) API'sidir.

Ayr─▒ca bak─▒n─▒z: https://github.com/electrolinux/phpquery

Zend_Dom

Zend_Dom, DOM dok├╝manlar─▒ ve yap─▒lar─▒ ile ├žal─▒┼čmak i├žin ara├žlar sa─člar. ┼×u anda, hem XPath hem de CSS se├žicileri kullanarak DOM belgelerini sorgulamak i├žin birle┼čtirilmi┼č bir aray├╝z sa─člayan Zend_Dom_Query sunuyoruz.

QueryPath

QueryPath, XML ve HTML'yi i┼člemek i├žin kullan─▒lan bir PHP k├╝t├╝phanesidir. Yaln─▒zca yerel dosyalarla de─čil, ayn─▒ zamanda web hizmetleri ve veritaban─▒ kaynaklar─▒ ile de ├žal─▒┼čacak ┼čekilde tasarlanm─▒┼čt─▒r. JQuery aray├╝z├╝n├╝n ├žo─čunu (CSS stili se├žiciler dahil) uygular, ancak sunucu taraf─▒nda kullan─▒m i├žin yo─čun ┼čekilde ayarlanm─▒┼čt─▒r. Composer arac─▒l─▒─č─▒yla kurulabilir.

fDOMDocument

fDOMDocument, standart DOM'yi PHP uyar─▒lar─▒ veya bildirimleri yerine her t├╝rl├╝ hata durumunda istisnalar kullanacak ┼čekilde geni┼čletir. Ayr─▒ca kolayl─▒k sa─člamak ve DOM kullan─▒m─▒n─▒ basitle┼čtirmek i├žin ├že┼čitli ├Âzel y├Ântemler ve k─▒sayollar eklerler.

k─▒l─▒├ž / xml

sabre / xml, XMLReader ve XMLWriter s─▒n─▒flar─▒n─▒ saran bir "xml nesneye / dizi" e┼čleme sistemi ve tasar─▒m deseni olu┼čturmak i├žin sarar ve geni┼čleten bir k├╝t├╝phanedir. XML yazma ve okuma tek ge├ži┼čtir ve bu nedenle h─▒zl─▒ olabilir ve b├╝y├╝k xml dosyalar─▒nda d├╝┼č├╝k bellek gerektirir.

FluidXML

FluidXML, k─▒sa ve ak─▒c─▒ bir API ile XML'i i┼člemek i├žin kullan─▒lan bir PHP k├╝t├╝phanesidir. E─členceli ve etkili olmas─▒ i├žin XPath ve ak─▒c─▒ programlama d├╝zeninden yararlan─▒r.


3. Parti (libxml tabanl─▒ de─čil)

DOM / libxml ├╝zerine olu┼čturman─▒n yarar─▒, yerel bir uzant─▒ya dayand─▒─č─▒n─▒z i├žin kutudan iyi bir performans elde etmenizdir. Ancak, 3. parti liblerin t├╝m├╝ bu yoldan a┼ča─č─▒ya inmez. Bunlardan baz─▒lar─▒ a┼ča─č─▒da listelenmi┼čtir.

PHP Basit HTML DOM Ayr─▒┼čt─▒r─▒c─▒

  • PHP5 + ile yaz─▒lm─▒┼č bir HTML DOM ayr─▒┼čt─▒r─▒c─▒s─▒, HTML'yi ├žok kolay bir ┼čekilde de─či┼čtirmenize olanak sa─člar!
  • PHP 5+ iste.
  • Ge├žersiz HTML'yi destekler.
  • Se├žtikleri ile ayn─▒ jQuery gibi bir HTML sayfas─▒ndaki etiketleri bulun.
  • ─░├žeri─či HTML'den tek bir sat─▒rda ├ž─▒kar─▒n.

Genellikle bu ayr─▒┼čt─▒r─▒c─▒y─▒ ├Ânermiyorum. Kod temeli korkun├ž ve ayr─▒┼čt─▒r─▒c─▒n─▒n kendisi olduk├ža yava┼č ve haf─▒zas─▒ a├ž. T├╝m jQuery Selekt├Ârleri ( ├žocuk se├žiciler gibi ) m├╝mk├╝n de─čildir. Libxml tabanl─▒ k├╝t├╝phanelerden herhangi biri bunu kolayca geride b─▒rakmal─▒d─▒r.

PHP Html Ayr─▒┼čt─▒r─▒c─▒

PHPHtmlParser, jQuery gibi herhangi bir css se├žicisini kullanarak etiket se├žmenize izin veren basit, esnek bir html ayr─▒┼čt─▒r─▒c─▒s─▒d─▒r. Hedef, ge├žerli olup olmad─▒─č─▒na bak─▒lmaks─▒z─▒n, html'leri hurdalamak i├žin h─▒zl─▒ ve kolay bir yol gerektiren ara├žlar─▒n geli┼čtirilmesine yard─▒mc─▒ olmakt─▒r! Bu proje sunra / php-simple-html-dom-parser taraf─▒ndan desteklenmi┼čti, ancak destek durmu┼č g├Âr├╝n├╝yor, bu y├╝zden bu proje ├Ânceki ├žal─▒┼čmamdaki uyarlamam.

Yine, bu ayr─▒┼čt─▒r─▒c─▒ tavsiye etmem. Y├╝ksek CPU kullan─▒m─▒ ile olduk├ža yava┼čt─▒r. Ayr─▒ca olu┼čturulan DOM nesnelerinin haf─▒zas─▒n─▒ temizleme i┼člevi yoktur. Bu problemler ├Âzellikle i├ž i├že ge├žmi┼č halkalarla birlikte ├Âl├žeklenir. Dok├╝mantasyon yanl─▒┼č ve yanl─▒┼č yaz─▒lm─▒┼č, 14 Nis 16'dan beri yap─▒lan d├╝zeltmelere hi├žbir yan─▒t vermedi.

Ganon

  • Evrensel bir belirte├ž ve HTML / XML / RSS DOM Ayr─▒┼čt─▒r─▒c─▒
    • Elemanlar─▒ ve niteliklerini manip├╝le edebilme
    • Ge├žersiz HTML ve UTF8'i destekler
  • ├ľ─čeler ├╝zerinde geli┼čmi┼č CSS3 benzeri sorgular ger├žekle┼čtirebilir (jQuery gibi - desteklenen ad alanlar─▒)
  • Bir HTML g├╝zelle┼čtirici (HTML Tidy gibi)
    • CSS ve Javascript'i k├╝├ž├╝lt├╝n
    • Nitelikleri s─▒ralay─▒n, karakter b├╝y├╝kl├╝─č├╝n├╝ de─či┼čtirin, do─čru girinti, vb.
  • Geni┼čletilebilir
    • Ge├žerli karakter / jetonu temel alan geri aramalar─▒ kullanarak dok├╝manlar─▒ ayr─▒┼čt─▒rma
    • Kolay ge├žersiz k─▒lma i├žin daha k├╝├ž├╝k fonksiyonlarda ayr─▒lm─▒┼č i┼člemler
  • H─▒zl─▒ ve kolay

Hi├ž kullanmad─▒m. ─░yi olup olmad─▒─č─▒n─▒ s├Âyleyemem.


HTML 5

Yukar─▒dakileri HTML5ÔÇÖi ayr─▒┼čt─▒rmak i├žin kullanabilirsiniz, ancak HTML5ÔÇÖin izin verdi─či bi├žimlendirmeden dolay─▒ tuhafl─▒klar olabilir . Yani HTML5 i├žin, gibi ├Âzel bir ayr─▒┼čt─▒r─▒c─▒ kullanmay─▒ d├╝┼č├╝nmek

html5lib

Ana masa├╝st├╝ web taray─▒c─▒lar─▒yla maksimum uyumluluk i├žin WHATWG HTML5 spesifikasyonuna dayanan bir HTML ayr─▒┼čt─▒r─▒c─▒s─▒n─▒n Python ve PHP uygulamalar─▒.

HTML5 tamamland─▒ktan sonra daha ├Âzel ayr─▒┼čt─▒r─▒c─▒lar g├Ârebiliriz. Ayr─▒ca W3'├╝n html 5 ayr─▒┼čt─▒rma i┼člemi i├žin How-To ba┼čl─▒kl─▒ bir blog yay─▒n─▒ var .


A─č hizmetleri

PHP programlama gibi hissetmiyorsan─▒z, Web servislerini de kullanabilirsiniz. Genel olarak, bunlar i├žin ├žok az fayda buldum, ama bu sadece benim ve kullan─▒m durumlar─▒m.

Kaz─▒y─▒c─▒ Wiki .

ScraperWiki'nin harici aray├╝z├╝, web'de veya kendi uygulamalar─▒n─▒zda kullanmak istedi─činiz bi├žimde veri ay─▒klaman─▒za olanak tan─▒r. Ayr─▒ca herhangi bir s─▒y─▒r─▒c─▒n─▒n durumu hakk─▒nda da bilgi alabilirsiniz.


D├╝zenli ifadeler

Son ve en az ├Ânerilen , d├╝zenli ifadelerle HTML'den veri ay─▒klayabilirsiniz . Genel olarak HTMLÔÇÖde Normal ─░fadeler kullanmak ├Ânerilmez.

Web'de bulaca─č─▒n─▒z snippet'lerin ├žo─ču i┼čaretlemeye uygun olacak ┼čekilde k─▒r─▒lgand─▒r. ├ço─ču durumda, yaln─▒zca ├žok ├Âzel bir HTML par├žas─▒ i├žin ├žal─▒┼č─▒yorlar. Bir yere bo┼čluk eklemek veya bir etikete nitelik eklemek veya bunlar─▒ de─či┼čtirmek gibi minik i┼čaretleme de─či┼čiklikleri RegEx'in d├╝zg├╝n bir ┼čekilde yaz─▒lmad─▒─č─▒nda ba┼čar─▒s─▒z olmas─▒na neden olabilir. RegExÔÇÖi HTMLÔÇÖde kullanmadan ├Ânce ne yapt─▒─č─▒n─▒z─▒ bilmelisiniz.

HTML ayr─▒┼čt─▒r─▒c─▒lar─▒ zaten HTML'nin s├Âzdizimsel kurallar─▒n─▒ biliyor. Yazd─▒─č─▒n─▒z her yeni RegEx i├žin d├╝zenli ifadeler ├Â─čretilmelidir. RegEx baz─▒ durumlarda gayet iyi, ancak kullan─▒m durumunuza ger├žekten ba─čl─▒.

Sen daha g├╝venilir ayr─▒┼čt─▒r─▒c─▒lar yazabilirsiniz , ancak bir yazma tam ve g├╝venilir d├╝zenli ifadeler ile ├Âzel ayr─▒┼čt─▒r─▒c─▒ yukar─▒da belirtilen k├╝t├╝phaneler zaten var ve bu konuda ├žok daha iyi bir i┼č yapmak zaman kayb─▒d─▒r.

Ayr─▒ca bak─▒n─▒z Html The Cthulhu Way Ayr─▒┼čt─▒rma


Kitaplar

Biraz para harcamak istiyorsan─▒z, bir g├Âz at─▒n

PHP Architect veya yazarlara ba─čl─▒ de─čilim.


1853







Basit HTML DOM Ayr─▒┼čt─▒r─▒c─▒'y─▒ deneyin

  • PHP 5+ ile yaz─▒lm─▒┼č, HTML'yi ├žok kolay bir ┼čekilde de─či┼čtirmenize izin veren bir HTML DOM ayr─▒┼čt─▒r─▒c─▒s─▒!
  • PHP 5+ iste.
  • Ge├žersiz HTML'yi destekler.
  • Se├žtikleri ile ayn─▒ jQuery gibi bir HTML sayfas─▒ndaki etiketleri bulun.
  • ─░├žeri─či HTML'den tek bir sat─▒rda ├ž─▒kar─▒n.
  • ─░ndir


http://simplehtmldom.sourceforge.net/manual.htm

├ľrnekler:

HTML ├Â─čeleri nas─▒l al─▒n─▒r:

 // Create DOM from URL or file
$html = file_get_html('http://www.example.com/');

// Find all images
foreach($html->find('img') as $element)
       echo $element->src . '<br>';

// Find all links
foreach($html->find('a') as $element)
       echo $element->href . '<br>';
 


HTML ├Â─čeleri nas─▒l de─či┼čtirilir:

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


HTML'den i├žerik ay─▒kla:

 // Dump contents (without tags) from HTML
echo file_get_html('http://www.google.com/')->plaintext;
 


Kaz─▒ma 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);
 

319







Sadece DOMDocument-> loadHTML () kullan─▒n ve onunla bitirin . libxml'in HTML ayr─▒┼čt─▒rma algoritmas─▒ olduk├ža iyi ve h─▒zl─▒d─▒r ve pop├╝ler inan─▒┼č─▒n aksine hatal─▒ bi├žimlendirilmi┼č HTML'de bo─čulmaz.


232







Neden s├Âylememelisiniz ve ne zaman d├╝zenli ifadeler kullanmal─▒s─▒n─▒z?

─░lk olarak, ortak bir yanl─▒┼č isim verme: Regexps, HTML'yi " ayr─▒┼čt─▒rma " ama├žl─▒ de─čildir . Bununla birlikte, regexes verileri " ├ž─▒karabilir " . ├ç─▒karma bunun i├žin yap─▒l─▒r. Uygun SGML ara├ž setleri veya temel XML ayr─▒┼čt─▒r─▒c─▒lar─▒ ├╝zerinden regex HTML ├ž─▒kartman─▒n en b├╝y├╝k dezavantaj─▒, s├Âzdizimsel ├žabalar─▒ ve de─či┼čken g├╝venilirlikleridir.

Biraz g├╝venilir bir HTML ├ž─▒kar─▒m regex yapmay─▒ d├╝┼č├╝n├╝n:

 <a\s+class="?playbutton\d?[^>]+id="(\d+)".+?    <a\s+class="[\w\s]*title
[\w\s]*"[^>]+href="(http://[^">]+)"[^>]*>([^<>]+)</a>.+?
 

basit bir phpQuery veya QueryPath e┼čde─čerinden ├žok daha az okunabilir:

 $div->find(".stationcool a")->attr("title");
 

Bununla birlikte, yard─▒mc─▒ olabilecekleri ├Âzel kullan─▒m durumlar─▒ vard─▒r.

  • Pek ├žok DOM ge├ži┼či ├Ân u├žlar─▒ <!-- , HTML ├ž─▒kartmalar─▒n─▒ a├ž─▒klamaz , ancak bazen ├ž─▒kartma i├žin daha kullan─▒┼čl─▒ ├žapalard─▒r. ├ľzellikle s├Âzde-HTML varyasyonlar─▒ <$var> veya SGML kal─▒nt─▒lar─▒n─▒n regexps ile evcille┼čtirilmesi kolayd─▒r.
  • ├ço─ču zaman d├╝zenli ifadeler i┼člem sonras─▒ tasarruf sa─člayabilir. Bununla birlikte, HTML varl─▒klar─▒ genellikle manuel bak─▒m gerektirir.
  • Ve son olarak, <img src = url'leri ├ž─▒karmak gibi son derece basit i┼čler i├žin, asl─▒nda muhtemel bir ara├žt─▒r. SGML / XML ayr─▒┼čt─▒r─▒c─▒lar─▒na g├Âre h─▒z avantaj─▒ ├žo─čunlukla bu ├žok temel ├ž─▒karma i┼člemlerinde ortaya ├ž─▒kar.

Hatta d├╝zenli ifadeler kullanarak bir HTML par├žac─▒─č─▒n─▒ ├Ânceden ay─▒klaman─▒z /<!--CONTENT-->(.+?)<!--END-->/ ve geri kalan─▒ daha basit HTML ayr─▒┼čt─▒r─▒c─▒ ├Ân u├žlar─▒n─▒ kullanarak i┼člemeniz bile ├Ânerilir .

Not: Asl─▒nda, asl─▒nda XML ayr─▒┼čt─▒rma ve d├╝zenli ifadeler kulland─▒─č─▒m bu uygulamaya sahibim. Daha ge├žen hafta PyQuery ayr─▒┼čt─▒rma bozuldu ve regex hala ├žal─▒┼čt─▒. Evet tuhaf ve bunu kendim a├ž─▒klayamam. Ama ├Âyle oldu.
Bu y├╝zden l├╝tfen ger├žek d├╝nyaya ili┼čkin d├╝┼č├╝nceleri a┼ča─č─▒ya oylamay─▒n, ├ž├╝nk├╝ regex = ┼čeytani meme ile e┼čle┼čmez. Ama bunu da fazla oy kullanmayal─▒m. Bu sadece bu konu i├žin bir yaz─▒.


146







phpQuery ve QueryPath , ak─▒c─▒ jQuery API'sinin ├žo─čalt─▒lmas─▒nda olduk├ža benzerdir. Bu nedenle , PHP'yi d├╝zg├╝n bir ┼čekilde ayr─▒┼čt─▒rmak i├žin en kolay yakla┼č─▒mlardan ikisi olmalar─▒n─▒n nedeni de budur .

QueryPath i├žin ├Ârnekler

Temel olarak, ├Ânce bir HTML dizesinden sorgulanabilir bir DOM a─čac─▒ olu┼čturuyorsunuz:

  $qp = qp("<html><body><h1>title</h1>..."); // or give filename or URL
 

Sonu├žta ortaya ├ž─▒kan nesne, HTML belgesinin eksiksiz bir a─ča├ž temsilini i├žerir. DOM y├Ântemleri kullan─▒larak gezilebilir. Ancak ortak yakla┼č─▒m, jQuery'deki gibi CSS se├žicilerini kullanmakt─▒r:

  $qp->find("div.classname")->children()->...;

 foreach ($qp->find("p img") as $img) {
     print qp($img)->attr("src");
 }
 

├ço─čunlukla basit #id ve .class veya DIV etiket se├žicileri kullanmak istersiniz ->find() . Ancak , bazen daha h─▒zl─▒ olan XPath deyimlerini de kullanabilirsiniz . Ayn─▒ zamanda tipik jQuery y├Ântemleri gibi ->children() ve do─čru HTML par├žac─▒klar─▒n─▒ ├ž─▒karmay─▒ ->text() ├Âzellikle ->attr() basitle┼čtirir. (Ve zaten SGML varl─▒klar─▒n─▒n kodunu ├ž├Âzd├╝m.)

  $qp->xpath("//div/p[1]");  // get first paragraph in a div
 

QueryPath ayr─▒ca stream ( ->append ) 'e yeni etiketlerin enjekte edilmesini ve daha sonra g├╝ncellenmi┼č bir belgenin ( ->writeHTML ) ├ž─▒kt─▒s─▒n─▒ almay─▒ ve g├╝zelle┼čtirmesini sa─člar . Yaln─▒zca hatal─▒ bi├žimlendirilmi┼č HTML'yi de─čil, ayn─▒ zamanda ├že┼čitli XML leh├želerini (ad alanlar─▒yla) ayr─▒┼čt─▒rabilir ve hatta HTML mikro bi├žimlerinden (XFN, vCard) veri ay─▒klayabilir.

  $qp->find("a[target=_blank]")->toggleClass("usability-blunder");
 

.

phpQuery veya QueryPath?

Genellikle QueryPath, belgelerin i┼členmesi i├žin daha uygundur. PhpQuery, jQuery'e daha yak─▒ndan benzemek i├žin baz─▒ s├Âzde AJAX y├Ântemlerini (yaln─▒zca HTTP istekleri) de uygular. PhpQuery'nin QueryPath'ten (daha az genel ├Âzellik nedeniyle) genellikle daha h─▒zl─▒ oldu─ču s├Âylenir.

Farkl─▒l─▒klar hakk─▒nda daha fazla bilgi i├žin tagbyte.org adresindeki geri d├Ân├╝┼č makinesinde bu kar┼č─▒la┼čt─▒rmaya bak─▒n . (Orijinal kaynak kayboldu, i┼čte bir internet ar┼čivi ba─člant─▒s─▒. Evet, hala eksik sayfalar─▒ ve insanlar─▒ bulabilirsiniz.)

Ve i┼čte kapsaml─▒ bir QueryPath tan─▒t─▒m─▒ .

Avantajlar─▒

  • Sadelik ve G├╝venilirlik
  • Alternatifleri kullanmak kolayd─▒r ->find("a img, a object, div a")
  • Uygun veri ├ž─▒kmaz (normal ifade grepping ile kar┼č─▒la┼čt─▒r─▒ld─▒─č─▒nda)

130







Basit HTML DOM, harika bir a├ž─▒k kaynakl─▒ ├ž├Âz├╝mleyicidir:

simplehtmldom.sourceforge

DOM ├Â─čelerini nesne y├Ânelimli bir ┼čekilde ele al─▒r ve yeni yinelemeyle uyumlu olmayan kodlar i├žin ├žok fazla kapsam vard─▒r. Ayr─▒ca, bu etiket ad─▒n─▒n t├╝m ├Â─čelerini d├Ând├╝ren "find" i┼člevi gibi JavaScript'te g├Ârece─činiz baz─▒ harika i┼člevler de vard─▒r.

Bunu, bir├žok farkl─▒ t├╝rde web sayfas─▒nda test ederek birka├ž ara├žta kulland─▒m ve harika ├žal─▒┼čt─▒─č─▒n─▒ d├╝┼č├╝n├╝yorum.


87







Burada bahsetmedi─čim genel bir yakla┼č─▒m , garantili-ge├žerli XHTML'yi t├╝k├╝rmek ├╝zere ayarlanabilen HTML'yi Tidy ├╝zerinden ├žal─▒┼čt─▒rmakt─▒r . Daha sonra ├╝zerinde herhangi bir eski XML k├╝t├╝phanesini kullanabilirsiniz.

Ancak, sizin kendi probleminize g├Âre, bu projeye bir g├Âz atmal─▒s─▒n─▒z: http://fivefilters.org/content-only/ - bu sadece metinsel i├žeri─či ├ž─▒karmak i├žin tasarlanan Okunabilirlik algoritmas─▒n─▒n de─či┼čtirilmi┼č bir versiyonudur (ba┼čl─▒klar─▒ de─čil) ve altbilgiler) bir sayfadan.


59


2011-05-01





1a ve 2 i├žin: Yeni Symfony Componet s─▒n─▒f─▒ DOMCrawler ( DomCrawler ) i├žin oy kullan─▒rd─▒m . Bu s─▒n─▒f, CSS Se├žicilere benzer sorgulara izin verir. Ger├žek d├╝nyadan ├Ârnekler i├žin bu sunuma bir g├Âz at─▒n: symfony2 d├╝nyas─▒ haberi .

Bile┼čen ba─č─▒ms─▒z ├žal─▒┼čmak ├╝zere tasarlanm─▒┼čt─▒r ve Symfony olmadan kullan─▒labilir.

Tek dezavantaj─▒, yaln─▒zca PHP 5.3 veya daha yenisiyle ├žal─▒┼čacak olmas─▒d─▒r.


55







Bu, genellikle ekran kaz─▒ma olarak adland─▒r─▒l─▒r . Bunun i├žin kulland─▒─č─▒m k├╝t├╝phane Simple HTML Dom Parser .


52







Daha ├Ânce ihtiya├žlar─▒m─▒z i├žin epeyce taray─▒c─▒lar yaratt─▒k. G├╝n├╝n sonunda, genellikle en iyisini yapan basit d├╝zenli ifadelerdir. Yukar─▒da listelenen k├╝t├╝phaneler olu┼čturulduklar─▒ nedenden dolay─▒ iyidir, ancak ne arad─▒─č─▒n─▒z─▒ biliyorsan─▒z, normal ifadeler daha g├╝venli bir yoldur, ├ž├╝nk├╝ y├╝klenirse ba┼čar─▒s─▒z olacak ge├žerli olmayan HTML / XHTML yap─▒lar─▒n─▒ da kullanabilirsiniz ayr─▒┼čt─▒r─▒c─▒lar─▒n ├žo─ču arac─▒l─▒─č─▒yla.


41







PHP Basit HTML DOM Ayr─▒┼čt─▒r─▒c─▒ ├Âneririz .

Ger├žekten g├╝zel ├Âzelliklere sahip:

 foreach($html->find('img') as $element)
       echo $element->src . '<br>';
 

38


2012-11-06





Bu, W3C XPath teknolojisinin iyi bir g├Ârev tan─▒m─▒ gibi geliyor . "─░├žerdi─či etiketlerdeki t├╝m href ├Âzellikleri d├Ând├╝r" gibi sorgular─▒ kolayca ifade edebilirsiniz . PHP tutkunu olmamak, XPath'─▒n hangi formda kullan─▒labilece─čini size s├Âyleyemem. HTML dosyas─▒n─▒ i┼člemek i├žin harici bir program arayabilirseniz, XPath komut sat─▒r─▒ s├╝r├╝m├╝n├╝ kullanabilmelisiniz. H─▒zl─▒ bir giri┼č i├žin bkz. Http://en.wikipedia.org/wiki/XPath . img <foo><bar><baz> elements http://en.wikipedia.org/wiki/XPath


36


2011-04-14





Dize Ayr─▒┼čt─▒rma yerine DOM kullanan SimpleHtmlDom ├╝nc├╝ parti alternatifleri: phpQuery , Zend_Dom , QueryPath ve FluentDom .


29







Evet, ama├ž i├žin simple_html_dom kullanabilirsiniz. Bununla birlikte, simple_html_dom ile, ├Âzellikle web hurdas─▒ i├žin ├žok ├žal─▒┼čt─▒m ve ├žok savunmas─▒z oldu─čunu g├Ârd├╝m. Temel i┼či yap─▒yor ama yine de tavsiye etmeyece─čim.

Curl'─▒ hi├ž bir ama├ž i├žin kullanmad─▒m ama ├Â─črendim ki, curl i┼či daha verimli bir ┼čekilde yapabiliyor ve ├žok daha sa─člam.

L├╝tfen bu ba─člant─▒ya g├Âz at─▒n: curl ile-scraping-websites-with-curl


24







QueryPath iyidir, ancak "izleme durumu" konusunda dikkatli olun, ├ž├╝nk├╝ bunun ne anlama geldi─čini anlamad─▒ysan─▒z, bunun ne oldu─čunu ve kodun neden ├žal─▒┼čmad─▒─č─▒n─▒ ├Â─črenmek i├žin ├žok fazla hata ay─▒klama zaman─▒ harcaman─▒za neden olabilir.

Bunun anlam─▒, sonu├ž k├╝mesindeki her ├ža─čr─▒ nesnede ayarlanan sonucu de─či┼čtirir, her ba─člant─▒n─▒n yeni bir k├╝me oldu─ču jquery'de oldu─ču gibi zincirlenebilir de─čildir, sorgunuzdan sonu├žlanan tek bir k├╝meniz vard─▒r ve her i┼člev ├ža─čr─▒s─▒ de─či┼čtirir bu tek set.

Jquery benzeri bir davran─▒┼č elde etmek i├žin, bir filtreleme / de─či┼čtirme i┼člemi yapmadan ├Ânce dallanman─▒z gerekir; bu, jquery'de olanlar─▒ daha yak─▒ndan yans─▒taca─č─▒ anlam─▒na gelir.

 $results = qp("div p");
$forename = $results->find("input[name='forename']");
 

$results ┼×imdi input[name='forename'] , orijinal sorgu NOT i├žin ayarlanan sonucu i├žerir, "div p" bu beni ├žok tetikledi, buldu─čum ┼čey QueryPath'in filtreleri ve bulgular─▒ izlemesini ve sonu├žlar─▒n─▒z─▒ de─či┼čtiren ve bunlar─▒ nesnede saklayan her ┼čeydi . bunun yerine bunu yapman─▒z gerekir

 $forename = $results->branch()->find("input[name='forname']")
 

o $results zaman de─či┼čtirilmeyecek ve tekrar tekrar ayarlanan sonucu tekrar kullanabilirsiniz, belki de ├žok daha fazla bilgiye sahip birileri bunu biraz temizleyebilir, fakat temelde buldu─čum ┼čeyden buna benzer.


23







Advanced Html Dom , ayn─▒ aray├╝z├╝ sunan basit bir HTML DOM yede─čidir , ancak DOM temellidir ve ili┼čkili bellek sorunlar─▒ndan hi├žbirinin olu┼čmad─▒─č─▒ anlam─▒na gelir.

Ayr─▒ca, jQuery uzant─▒lar─▒ dahil olmak ├╝zere tam CSS deste─čine sahiptir .


19







─░├žin HTML5 , HTML5 lib y─▒llard─▒r terk edildi. En son g├╝ncelleme ve bak─▒m kay─▒tlar─▒yla bulabildi─čim tek HTML5 k├╝t├╝phanesi html5-php . Bir haftadan biraz ├Ânce beta 1.0'a getirildi.


18







GB dosyalar─▒n─▒ kolayca idare edebilecek genel ama├žl─▒ bir XML ayr─▒┼čt─▒r─▒c─▒ yazd─▒m. XMLReader'a dayan─▒r ve kullan─▒m─▒ ├žok kolayd─▒r:

 $source = new XmlExtractor("path/to/tag", "/path/to/file.xml");
foreach ($source as $tag) {
    echo $tag->field1;
    echo $tag->field2->subfield1;
}
 

─░┼čte github deposu : XmlExtractor


17







PHP5 ve XML belgelerini jQuery ile yapt─▒─č─▒n─▒z gibi taramay─▒ sa─člayan PHPPowertools / DOM-Query adl─▒ bir k├╝t├╝phane olu┼čturdum .

Ba┼čl─▒k alt─▒nda, CSS se├žicilerin XPath se├žicilere d├Ân├╝┼čt├╝r├╝lmesi i├žin symfony / DomCrawler kullan─▒r . ─░yi bir performans sa─člamak i├žin her zaman bir nesneyi di─čerine ge├žirirken bile ayn─▒ DomDocument ├Â─česini kullan─▒r.http://en.wikipedia.org/wiki/XPath


├ľrnek kullan─▒m:

 namespace PowerTools;

// Get file content
$htmlcode = file_get_contents('https://github.com');

// Define your DOMCrawler based on file string
$H = new DOM_Query($htmlcode);

// Define your DOMCrawler based on an existing DOM_Query instance
$H = new DOM_Query($H->select('body'));

// Passing a string (CSS selector)
$s = $H->select('div.foo');

// Passing an element object (DOM Element)
$s = $H->select($documentBody);

// Passing a DOM Query object
$s = $H->select( $H->select('p + p'));

// Select the body tag
$body = $H->select('body');

// Combine different classes as one selector to get all site blocks
$siteblocks = $body->select('.site-header, .masthead, .site-body, .site-footer');

// Nest your methods just like you would with jQuery
$siteblocks->select('button')->add('span')->addClass('icon icon-printer');

// Use a lambda function to set the text of all site blocks
$siteblocks->text(function( $i, $val) {
    return $i . " - " . $val->attr('class');
});

// Append the following HTML to all site blocks
$siteblocks->append('<div class="site-center"></div>');

// Use a descendant selector to select the site's footer
$sitefooter = $body->select('.site-footer > .site-center');

// Set some attributes for the site's footer
$sitefooter->attr(array('id' => 'aweeesome', 'data-val' => 'see'));

// Use a lambda function to set the attributes of all site blocks
$siteblocks->attr('data-val', function( $i, $val) {
    return $i . " - " . $val->attr('class') . " - photo by Kelly Clark";
});

// Select the parent of the site's footer
$sitefooterparent = $sitefooter->parent();

// Remove the class of all i-tags within the site's footer's parent
$sitefooterparent->select('i')->removeAttr('class');

// Wrap the site's footer within two nex selectors
$sitefooter->wrap('<section><div class="footer-wrapper"></div></section>');

[...]
 

Desteklenen y├Ântemler:


  1. Belirgin nedenlerden dolay─▒ yeniden adland─▒r─▒lm─▒┼č 'se├ž'
  2. 'Void' olarak de─či┼čtirildi, ├ž├╝nk├╝ 'empty', PHP'de ayr─▒lm─▒┼č bir kelimedir.

NOT :

K├╝t├╝phane ayr─▒ca PSR-0 uyumlu k├╝t├╝phaneler i├žin kendi s─▒f─▒r konfig├╝rasyonlu otomatik y├╝kleyicisini i├žerir. Dahil edilen ├Ârnek, herhangi bir ek yap─▒land─▒rma olmadan kutudan ├ž─▒kmal─▒d─▒r. Alternatif olarak, besteci ile birlikte kullanabilirsiniz.


17







Herhangi bir "bozuk" HTML'yi temizlemek ve HTML'yi XHTML'ye d├Ân├╝┼čt├╝rmek i├žin HTML Tidy gibi bir ┼čey kullanmay─▒ deneyebilir ve daha sonra bir XML ├ž├Âz├╝mleyici ile ayr─▒┼čt─▒rabilirsiniz.


15







Deneyebilece─činiz ba┼čka bir se├ženek ise QueryPath . JQuery'den ilham ald─▒, ancak sunucu PHP'de ve Drupal'da kullan─▒ld─▒ .


15







XML_HTMLSax olduk├ža kararl─▒d─▒r - daha fazla korunmasa bile. Ba┼čka bir se├ženek HTML kodunuzu Html Tidy arac─▒l─▒─č─▒yla y├Ânlendirmek ve daha sonra standart XML ara├žlar─▒yla ayr─▒┼čt─▒rmak olabilir.


12







Symfony'nin ├žer├ževe HTML ayr─▒┼čt─▒rmak olabilir demetleri vard─▒r ve se├žmek i├žin CSS stilini kullanabilirsiniz document object modelini kullanmak yerine XPath .


11







HTML / XML DOM'u i┼člemek i├žin en ├žok bahsedilen bir├žok yol vard─▒r. Dolay─▒s─▒yla, bunlar─▒ kendim listeleme giri┼čiminde bulunmayaca─č─▒m.

Yaln─▒zca DOM uzant─▒s─▒n─▒ kullanmay─▒ ki┼čisel olarak tercih etti─čimi ve nedenini eklemek istiyorum:

  • iit, temel C kodunun performans avantaj─▒ndan en iyi ┼čekilde yararlan─▒r.
  • OO PHP (ve onu alt s─▒n─▒ra almama izin veriyor)
  • olduk├ža d├╝┼č├╝k seviyededir (daha geli┼čmi┼č davran─▒┼č i├žin ┼či┼čirilmemi┼č bir temel olarak kullanmam─▒ sa─člar)
  • DOM'un her b├Âl├╝m├╝ne eri┼čim sa─člar (├Ârne─čin, daha az bilinen XML ├Âzelliklerinin baz─▒lar─▒n─▒ yok sayan ├Ârne─čin SimpleXml'den farkl─▒)
  • Yerel Javascript'te kullan─▒lan s├Âzdizimine benzer olan DOM tarama i├žin kullan─▒lan bir s├Âzdizimine sahiptir.

Ve CSS se├žicilerini kullanma yetene─čini ├Âzl├╝yorsam da DOMDocument , bu ├Âzelli─či eklemenin olduk├ža basit ve kolay bir yolu var: Alt s─▒n─▒f─▒n─▒za DOMDocument JSC benzeri querySelectorAll ve querySelector y├Ântemleri alt s─▒n─▒fland─▒rma ve ekleme .

Se├žicilerin ayr─▒┼čt─▒r─▒lmas─▒ i├žin , Symfony ├žer├ževesinden ├žok minimalist CssSelector bile┼čenini kullanman─▒z─▒ ├Âneririm . Bu bile┼čen sadece CSS se├žicilerini XPath se├žicilere ├ževirir ve bu sayede ilgili Nodelist'i almak i├žin a i├žine beslenebilir.http://symfony.com/ DOMXpath

Daha sonra bu (hala ├žok d├╝┼č├╝k seviye) alt s─▒n─▒f─▒n─▒, ├Ârne─čin ama├žlanan daha y├╝ksek seviyeli s─▒n─▒flar i├žin temel olarak kullanabilirsiniz. ├žok spesifik XML t├╝rlerini ayr─▒┼čt─▒r─▒n veya daha fazla jQuery benzeri davran─▒┼č ekleyin.

A┼ča─č─▒daki kod do─črudan DOM-Query k├╝t├╝phanemden ├ž─▒k─▒yor ve tarif etti─čim tekni─či kullan─▒yor.

HTML ayr─▒┼čt─▒rma i├žin:

 namespace PowerTools;

use \Symfony\Component\CssSelector\CssSelector as CssSelector;

class DOM_Document extends \DOMDocument {
    public function __construct($data = false, $doctype = 'html', $encoding = 'UTF-8', $version = '1.0') {
        parent::__construct($version, $encoding);
        if ($doctype && $doctype === 'html') {
            @$this->loadHTML($data);
        } else {
            @$this->loadXML($data);
        }
    }

    public function querySelectorAll($selector, $contextnode = null) {
        if (isset($this->doctype->name) && $this->doctype->name == 'html') {
            CssSelector::enableHtmlExtension();
        } else {
            CssSelector::disableHtmlExtension();
        }
        $xpath = new \DOMXpath($this);
        return $xpath->query(CssSelector::toXPath($selector, 'descendant::'), $contextnode);
    }

    [...]

    public function loadHTMLFile($filename, $options = 0) {
        $this->loadHTML(file_get_contents($filename), $options);
    }

    public function loadHTML($source, $options = 0) {
        if ($source && $source != '') {
            $data = trim($source);
            $html5 = new HTML5(array('targetDocument' => $this, 'disableHtmlNsInDom' => true));
            $data_start = mb_substr($data, 0, 10);
            if (strpos($data_start, '<!DOCTYPE ') === 0 || strpos($data_start, '<html>') === 0) {
                $html5->loadHTML($data);
            } else {
                @$this->loadHTML('<!DOCTYPE html><html><head><meta charset="' . $encoding . '" /></head><body></body></html>');
                $t = $html5->loadHTMLFragment($data);
                $docbody = $this->getElementsByTagName('body')->item(0);
                while ($t->hasChildNodes()) {
                    $docbody->appendChild($t->firstChild);
                }
            }
        }
    }

    [...]
}
 

Ayr─▒ca bkz . Symfony'nin yarat─▒c─▒s─▒ Fabien Potencier'in Symfony i├žin CssSelector bile┼čenini olu┼čturma karar─▒ ve nas─▒l kullan─▒laca─č─▒ konusundaki karar─▒yla ilgili CSS se├žicileriyle XML belgelerini ayr─▒┼čt─▒rma .


11







FluidXML ile XPath ve CSS Se├žicileri kullanarak XML'yi sorgulayabilir ve yineleyebilirsiniz .

 $doc = fluidxml('<html>...</html>');

$title = $doc->query('//head/title')[0]->nodeValue;

$doc->query('//body/p', 'div.active', '#bgId')
        ->each(function($i, $node) {
            // $node is a DOMNode.
            $tag   = $node->nodeName;
            $text  = $node->nodeValue;
            $class = $node->getAttribute('class');
        });
 

https://github.com/servo-php/fluidxml


9







JSON ve XML'den dizi ├╝├ž sat─▒rda:

 $xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
 

Ta da!


7







HTML'yi normal ifadeyle ayr─▒┼čt─▒rmamak i├žin birka├ž neden vard─▒r. Ancak, hangi HTMLÔÇÖnin ├╝retilece─čini tamamen kontrol ederseniz, basit d├╝zenli ifadelerle yapabilirsiniz.

Yukar─▒daki, HTML'yi normal ifadeyle ayr─▒┼čt─▒ran bir i┼člevdir. Bu i┼člevin ├žok hassas oldu─čunu ve HTMLÔÇÖnin belirli kurallara uymas─▒n─▒ talep etti─čini, ancak bir├žok senaryoda ├žok iyi ├žal─▒┼čt─▒─č─▒n─▒ unutmay─▒n. Basit bir ayr─▒┼čt─▒r─▒c─▒ istiyorsan─▒z ve kitapl─▒klar kurmak istemiyorsan─▒z, ┼čunu bir ├žekim yap─▒n:

 function array_combine_($keys, $values) {
    $result = array();
    foreach ($keys as $i => $k) {
        $result[$k][] = $values[$i];
    }
    array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));

    return $result;
}

function extract_data($str) {
    return (is_array($str))
        ? array_map('extract_data', $str)
        : ((!preg_match_all('#<([A-Za-z0-9_]*)[^>]*>(.*?)</\1>#s', $str, $matches))
            ? $str
            : array_map(('extract_data'), array_combine_($matches[1], $matches[2])));
}

print_r(extract_data(file_get_contents("http://www.google.com/")));
 

7







Https://github.com/ivopetkov/html5-dom-document-php adresinde serbest├že kullan─▒labilen HTML5DOMDocument adl─▒ bir kitapl─▒k olu┼čturdumhttps://github.com/ivopetkov/html5-dom-document-php

Sorgu se├žicilerini de destekliyor, bu da sizin durumunuzda son derece yararl─▒ olaca─č─▒n─▒ d├╝┼č├╝n├╝yorum. ─░┼čte baz─▒ ├Ârnek kod:

 $dom = new IvoPetkov\HTML5DOMDocument();
$dom->loadHTML('<!DOCTYPE html><html><body><h1>Hello</h1><div class="content">This is some text</div></body></html>');
echo $dom->querySelector('h1')->innerHTML;
 

2







JQuery se├žicisine a┼čina iseniz, ScarletsQuery for PHP'yi kullanabilirsiniz.

 <pre><?php
include "ScarletsQuery.php";

// Load the HTML content and parse it
$html = file_get_contents('https://www.lipsum.com');
$dom = Scarlets\Library\MarkupLanguage::parseText($html);

// Select meta tag on the HTML header
$description = $dom->selector('head meta[name="description"]')[0];

// Get 'content' attribute value from meta tag
print_r($description->attr('content'));

$description = $dom->selector('#Content p');

// Get element array
print_r($description->view);
 

Bu k├╝t├╝phane ├ževrimd─▒┼č─▒ html'i i┼člemesi i├žin genellikle 1 saniyeden daha az zaman al─▒yor.
Ayr─▒ca, etiket ├Âzniteliklerinde ge├žersiz HTML veya eksik fiyat teklifi kabul eder.


0







Ayr─▒┼čt─▒rmak i├žin en iyi y├Ântem xml:

 $xml='http://www.example.com/rss.xml';
$rss = simplexml_load_string($xml);
$i = 0;
foreach ($rss->channel->item as $feedItem) {
$i++;
echo $title=$feedItem->title;
echo '<br>';
echo $link=$feedItem->link;
echo '<br>';
if($feedItem->description !='') {$des=$feedItem->description;} else {$des='';}
echo $des;
echo '<br>';
if($i>5) break;
}
 

0



─░lgili yay─▒nlar


PHP'de ┼čifre ├ž├Âzme i├žin bcrypt nas─▒l kullan─▒l─▒r?

Docker'─▒n i┼čleminden nas─▒l ba─član─▒r ve ├ž─▒kar─▒l─▒r?

Eclipse IDE'de bir pencereyi / g├Âr├╝n├╝m├╝ nas─▒l b├Âler ve ay─▒r─▒rs─▒n─▒z?

Java derleyici s├╝r├╝m├╝n├╝ pom.xml dosyas─▒nda nas─▒l belirlersiniz?

Nas─▒l bir PHP String ┼čifrelemek ve ┼čifresini ├ž├Âzmek?

PHP'de HTML / XML'i nas─▒l ayr─▒┼čt─▒r─▒r ve i┼člersiniz?

PHP'de HttpOnly ├žerezlerini nas─▒l kullan─▒rs─▒n─▒z

JSON'u python ile nas─▒l talep edebilir ve i┼čleyebilirim?

URL sorgu parametrelerini Javascript'te nas─▒l ayr─▒┼čt─▒r─▒r─▒m? [├žift]

Python kullanarak Unix veya Linux'taki bir program─▒n i┼člem kimli─čini nas─▒l al─▒rs─▒n─▒z?

Etiketle ilgili di─čer sorular [php]


Git y├Ânetilen projesindeki t├╝m yerel de─či┼čiklikleri ├Ânceki durumuna nas─▒l d├Ând├╝rebilirim?

Vim'de tam bir sat─▒r ├žo─čalt

Ruby'de bir dizide bir de─čer olup olmad─▒─č─▒n─▒ kontrol edin

├ľny├╝kleme s├╝tunlar─▒n─▒ ayn─▒ y├╝kseklikte nas─▒l yapabilirim?

Bir de─či┼čkenin bir tam say─▒ olup olmad─▒─č─▒n─▒ kontrol etme

AngularJS ile onay kutusu de─čerlerinin listesine nas─▒l ba─člar─▒m?

Bir arg├╝man ve bir parametre aras─▒ndaki fark nedir?

jQuery Veriler vs Attr?

En boy oran─▒n─▒ korumak i├žin bir Resim ImageView'da nas─▒l ├Âl├žeklenir

Zaten yeni bir TTY ile ├žal─▒┼čan Docker kapsay─▒c─▒s─▒na nas─▒l girilir