ホームページ >バックエンド開発 >PHPチュートリアル >HTML の `` 要素から `href` 属性を確実に取得するにはどうすればよいですか?
ページ上のリンクを検索する場合、一般的なアプローチは正規表現を使用することです。ただし、次のような場合:
<a title="this" href="that">what?</a>
href 属性が a タグ内の最初に配置されていない場合、次の正規表現は失敗する可能性があります:
/<a\s[^>]*href=(\"\'??)([^\"\' >]*?)[^>]*>(.*)<\/a>/
信頼できる正規表現の検索HTML の処理は難しい場合があります。代わりに、この目的で DOM (ドキュメント オブジェクト モデル) を使用することを検討してください。
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 属性などの特定の属性のクエリにも使用できます。
$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 中国語 Web サイトの他の関連記事を参照してください。