PHP получает определенную информацию с веб-сайта, но со всех страниц - PullRequest
0 голосов
/ 03 июня 2019

Я хочу извлечь атрибут href, но этот атрибут особенно имеет функцию mailto.и я хочу сделать это не только для одной ссылки, но все ссылки принадлежат главной веб-странице.

Я пробовал это:

<?php

$url = "https://www.omurcanozcan.com";

$html = file_get_contents( $url);

libxml_use_internal_errors( true);
$doc = new DOMDocument;
$doc->loadHTML( $html);
$xpath = new DOMXpath( $doc);
$node = $xpath->query( "//a[@href='mailto:']")->item(0);


echo $node->textContent; // This will print **GET THIS TEXT**

 ?>

Я ожидаю, например, код

<a href='mailto:omurcan@omurcanozcan.com'>omurcan@omurcanozcan.com</a>

Я хочу повторить

<p>omurcan@omurcanozcan.com</p>

1 Ответ

0 голосов
/ 03 июня 2019

Основная проблема в том, что в вашем XPath вы проверяете на

//a[@href='mailto:']

При этом будет искать атрибут href, который содержит только mailto:, то, что вы хотите, это то, где href начинается с mailto:, вы можете сделать это, используя starts-with() ...

$node = $xpath->query( "//a[starts-with(@href,'mailto:')]")->item(0);

Во-вторых, я не думаю, что ваша страница полностью загружена, когда вы получаете контент, общий тест, который я делаю, этосохраните HTML, как только я загрузил его, чтобы я мог сначала проверить его ...

$url = "https://www.omurcanozcan.com";

$html = file_get_contents( $url);
file_put_contents("a.html", $html);

Если вы тогда посмотрите в .html, вы увидите HTML, который он использует, в содержимом, которое я не могусм. любые mailto: ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...