<link rel='canonical' href='http://test.com/asdfsdf/sdf/' />
Domを使用して正規のhref値を取得する必要があります。どうすればよいですか?
これを行うには複数の方法があります。
XMLの使用:
<?php
$html = "<link rel='canonical' href='http://test.com/asdfsdf/sdf/' />";
$xml = simplexml_load_string($html);
$attr = $xml->attributes();
print_r($attr);
?>
出力:
SimpleXMLElement Object
(
[@attributes] => Array
(
[rel] => canonical
[href] => http://test.com/asdfsdf/sdf/
)
)
または、Domを使用します。
<?php
$html = "<link rel='canonical' href='http://test.com/asdfsdf/sdf/' />";
$dom = new DOMDocument;
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('link');
foreach ($nodes as $node)
{
if ($node->getAttribute('rel') === 'canonical')
{
echo($node->getAttribute('href'));
}
}
?>
出力:
http://test.com/asdfsdf/sdf/
どちらの例でも、HTMLファイル全体を解析する場合はより多くのコードが必要ですが、必要な構造のほとんどを示しています。
この回答とDomのドキュメントから変更されたコード。