> 백엔드 개발 > PHP 튜토리얼 > HTML의 `` 요소에서 'href' 속성을 안정적으로 검색하려면 어떻게 해야 합니까?

HTML의 `` 요소에서 'href' 속성을 안정적으로 검색하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-28 05:41:13
원래의
795명이 탐색했습니다.

How Can I Reliably Retrieve the `href` Attribute from an `` Element in HTML?

A 요소의 href 속성 가져오기

페이지에서 링크를 찾으려는 일반적인 접근 방식은 정규식을 사용하는 것입니다. 그러나 다음과 같은 경우:

<a title="this" href="that">what?</a>
로그인 후 복사

href 속성이 a 태그 내에서 먼저 배치되지 않은 경우 다음 정규 표현식이 실패할 수 있습니다.

/<a\s[^>]*href=(\"\'??)([^\"\' >]*?)[^>]*>(.*)<\/a>/
로그인 후 복사

에 대한 신뢰할 수 있는 정규 표현식 찾기 HTML을 처리하는 것은 어려울 수 있습니다. 대안으로, 이러한 목적으로 DOM(Document Object Model)을 사용하는 것을 고려해 보십시오.

DOM을 사용하여 HTML 처리

다음은 DOM을 사용하여 A에서 href 속성 및 기타 정보를 검색하는 방법입니다. 요소:

$dom = new DOMDocument;
$dom->loadHTML($html);

// Loop through all 'a' elements
foreach ($dom->getElementsByTagName('a') as $node) {
    // Output the entire 'a' element's outer HTML
    echo $dom->saveHtml($node), PHP_EOL;
    
    // Get the node's text value
    echo $node->nodeValue; 
    
    // Check if the node has a 'href' attribute
    echo $node->hasAttribute( 'href' );
    
    // Get the 'href' attribute's value
    echo $node->getAttribute( 'href' );
    
    // Change the 'href' attribute's value
    $node->setAttribute('href', 'something else');
    
    // Remove the 'href' attribute
    $node->removeAttribute('href');
}
로그인 후 복사

XPath를 사용하여 href 속성 쿼리

XPath는 또한 href 속성과 같은 특정 속성을 쿼리하는 데 사용됩니다.

$dom = new DOMDocument;
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//a/@href');

foreach($nodes as $href) {
    echo $href->nodeValue;                       // echo current attribute value
    $href->nodeValue = 'new value';              // set new attribute value
    $href->parentNode->removeAttribute('href');  // remove attribute
}
로그인 후 복사

결론

DOM을 사용하면 A 요소에서 href와 같은 속성을 쉽게 검색하고 조작할 수 있습니다. 이 접근 방식은 정규 표현식보다 HTML을 처리하는 더 안정적이고 유연한 방법을 제공합니다.

위 내용은 HTML의 `` 요소에서 'href' 속성을 안정적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿