문제

그래요 단순한 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="#">) 하지만 설명하신 상황에서는 효과가 있을 것입니다.

다른 팁

슬래시를 삭제하려면 다음을 삭제하십시오.

string stripcslashes ( string $str )
.

또한 PHP 설명서 : stripcslashes

를 참조하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top