Php の DOMDocument を使用して、アンカーの href 属性を文字列に置き換える関数があります。ここにスニペットがあります:
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->loadHTML($text);
$anchors = $doc->getElementsByTagName('a');
foreach($anchors as $a) {
$a->setAttribute('href', 'http://google.com');
}
return $doc->saveHTML();
問題は、loadHTML($text) が $text を doctype、html、body などのタグで囲んでいることです。loadHTML() の代わりにこれを行うことで、これを回避しようとしました:
$doc = new DOMDocument('1.0', 'UTF-8');
$node = $doc->createTextNode($text);
$doc->appendChild($node);
...
残念ながら、これはすべてのエンティティ (アンカーを含む) をエンコードします。これをオフにする方法を知っている人はいますか?私はすでにドキュメントを徹底的に調べてハッキングしようとしましたが、理解できません。
ありがとう!:)