信頼できるHTMLの正規表現は難しいです。
DOMを使ってみるのがいいでしょう。
$dom = new DOMDocument; $dom->loadHTML($html); foreach ($dom->getElementsByTagName('a') as $node) { echo $dom->saveHtml($node), PHP_EOL; }
上記を使用すれば、
$html string関数のすべての要素Aの”外部HTML”を抽出してアウトプットすることができます。
・nodeの値をすべて抽出したい場合:
echo $node->nodeValue;
・hrefがちゃんと機能しているか調べる場合:
echo $node->hasAttribute( 'href' );
・href属性を取得する場合:
echo $node->getAttribute( 'href' );
・href属性を変更する場合:
$node->setAttribute('href', 'something else');
・href属性を除外したい場合:
$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 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。