Я ссылаюсь на эту ссылку, чтобы извлечь URL-адрес с веб-страницы, содержащей конкретные слова
regex для печати URL-адреса с любой веб-страницы со специальным словом в url
но несколько URL-адресов, таких как pinterest и URL-адрес реферала facebook, содержат слова, которые мне интересны, но я не хочу использовать facebook, pinterest urls, поскольку они не являются прямым URL-адресом, поэтому я хочу исключить эти URL-адреса, поэтому я заметил, что эти URL-адреса будут содержать по крайней мере два http
что-то вроде этого
http://www.pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.glamsham.com%2Fpicture-gallery%2Fsensual-in-saree-gallery%2Fspecials%2F3774%2F7%2Findex .htm & медиа = HTTP% 3A% 2F% 2Fmedia.glamsham.com% 2Fdownload% 2Fpicturegallery% 2Ffeatured% 2Fbollywood-красавиц-сари% 2F722-чувственное-в-saree.jpg & GUID = gNh5ehWodCZW-0 & описание = Рани% 20Mukerji% 20in% 20saree% 20at % 20Sensual% 20in% 20saree% 20picture% 20gallery% 20picture% 20% 23% 207% 20% 3A% 20glamsham.com
поэтому я хочу исключить URL-адреса, которые содержат по крайней мере два http
Вы можете попробовать что-то вроде этого, избегая этих URI:
$nodelist = $xpath->query("//a[contains(@href, '" . $needle . "')]"); for($i=0; $i < $nodelist->length; $i++) { $node = $nodelist->item($i); $href = $node->getAttribute('href'); if ( !preg_match('~^http://.+?https?\b~i', $href) ) echo "$href\n"; }
preg_match('~^http://.+?https?\b~i', $href)
должен совпадать с этими URI to-be-excluded
Я бы, вероятно, проверял, как вы их прокручиваете и удаляете с помощью двойных http, например:
$request_url ='YOUR URL'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $doc = new DOMDocument(); libxml_use_internal_errors(true); $doc->loadHTML($result); // loads your html $xpath = new DOMXPath($doc); $needle = 'blog'; $nodelist = $xpath->query("//a[contains(@href, '" . $needle . "')]"); $validUrls = array(); for($i=0; $i < $nodelist->length; $i++) { $node = $nodelist->item($i); $curUrl = $node->getAttribute('href'); if (substr_count($curUrl,'http')===1) { $validUrls[] = $curUrl; } } var_dump($validUrls); // all urls with only one "http"