간단한 DOM으로 href 링크 찾기
문제
그래요 단순한 PHPdom 얻기 위해 사용 a
href는 값을 다음 코드와 연결합니다.
$html = file_get_html($url);
foreach($html->find('a') as $element) $array[] = $element->href . '<br>';
이제 문제는 링크가 슬래시(/)로 시작하는 경우 링크가 유효하지 않다는 것입니다!
유효한 링크를 어떻게 가질 수 있나요?
예를 들어 링크는 다음과 같습니다.
<a href="/news45454.html">Test link</a>
phpsimpledom 코드를 사용하면 다음과 같은 결과가 나타납니다.
/news45454.html
하지만 내가 갖고 싶은 것은:
http://example.com/news45454.html
이것을 얻는 방법?
링크가 슬래시로 시작하는지 테스트한 다음 여기에 사이트 URL을 추가할 수 있나요?!어떻게 ?
해결책
기본적으로 HREF 요소가 유효한 전체 URL인지 테스트해야 합니다.유효성 검사가 통과되면 계속해서 배열에 추가할 수 있습니다.그러나 유효성 검사가 실패하면 기본 이름(웹 사이트의 도메인이어야 함)을 연결해야 합니다.
$html = file_get_html($url);
foreach($html->find('a') as $element) {
if(filter_var($url, FILTER_VALIDATE_URL)) {
// Valid URL, add to array.
$array[] = $element->href . '<br>';
} else {
// URL is invalid, add basename.
$array[] = basename($url) . $element->href . '<br>';
}
}
다른 경우에는 약간의 조정이 필요할 수 있습니다(예: <a href="#">
) 하지만 설명하신 상황에서는 효과가 있을 것입니다.
다른 팁
제휴하지 않습니다 StackOverflow