Очистить декодированную информацию с помощью PHP & amp; Curl

Я пытаюсь понять, как соскрести расшифрованные номера телефонов с сайта желтой страницы с помощью PHP & Curl.

Вот пример URL:
https://www.gelbeseiten.de/test

Обычно вы можете сделать это технически с чем-то вроде этого:

$ch = curl_init();
$page = curl_exec($ch);

if(preg_match('#example html code (.*) example html code#', $page, $match))
$result = $match[1];
echo $result;

Но на указанной выше странице вы не можете напрямую найти номер телефона в HTML-коде. Должен быть способ получить номер телефона.

Можете ли вы помочь мне?

С наилучшими пожеланиями,

Дженнифер

1

Решение

Не используйте регулярные выражения для анализа HTML, использовать HTML-парсер, как DOMDocument, т.е .:

$html = file_get_contents("https://www.gelbeseiten.de/test");
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

foreach ($xpath->query('//span[contains(@class,"nummer")]') as $item) {
print trim($item->textContent);
}

Выход:

(0211) 4 08 05(0211) 4 08 05(0211) 4 08 05(0211) 4 08 05(0231) 9 79 76(0231)...
0

Другие решения

Как предлагается в комментарии — использование выражения XPath позволяет получить телефонные номера по желанию.

$url='https://www.gelbeseiten.de/test';

$dom=new DOMDocument;
$dom->loadHTMLFile( $url );
$xp=new DOMXpath( $dom );

$query='//li[@class="phone"]';
$col=$xp->query($query);

if( $col ){
foreach( $col as $node )echo $node->nodeValue . "<br />";
}
$dom = $xp = $col = null;
0

По вопросам рекламы [email protected]