Belirli bir url desen eşleşmesi için düzenli ifade php

2 Cevap php

Ben birkaç yüz html sayfalarından bir kaç yüz adresler "kapmak" istiyorum.

Desen:

<h2><a href="http://www.the.url.might.be.long/urls.asp?urlid=1" target="_blank">The Website</a></h2>

2 Cevap

İşte yerli DOM uzantıları ile düzgün yapmak nasıl

// GET file
$doc = new DOMDocument;
$doc->loadHtmlFile('http://example.com/');

// Run XPath to fetch all href attributes from a elements
$xpath = new DOMXPath($doc);
$links = $xpath->query('//a/@href');

// collect href attribute values from all DomAttr in array
$urls = array();
foreach($links as $link) {
    $urls[] = $link->value;
}
print_r($urls);

Yukarıda da göreceli bağlantıları bulacaksınız unutmayın. Eğer istemiyorsanız kişilere XPath ayarlayın

'//a/@href[starts-with(., "http")]'

Note that using Regex to match HTML is the road to madness. Regex matches string patterns and knows nothing about HTML elements and attributes. DOM does, which is why you should prefer it over Regex for every situation that goes beyond matching a supertrivial string pattern from Markup.

'/http:\/\/[^\/]+/[^.]+\.asp\?urlid=\d+/'

Ama daha iyi PHP Simple HTML DOM burada HTML Parser, bir örnek kullanmak

$html = file_get_html('http://www.google.com/');

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