0

すべての<a>href を php ファイル内のテキストに置き換える必要があります。利用した

preg_replace('#\s?<a.*/a>#', 'text', $string);

ただし、これによりすべてのリンクが同じテキストに置き換えられます。リンクごとに異なるテキストが必要です。これを達成する方法。また、hrefリンクを完全に取得することは可能ですか?リンクを含むファイルがある場合<a href="www.google.com">Google</a>、文字列を抽出するにはどうすればよいですか'<a href="www.google.com">Google</a>'?

私を助けてください。

4

2 に答える 2

1

OK、途中でDOMを操作する方法について明確な答えがないので、あなたはそれを操作したいと思います:

$foo = '<body><p> Some BS and <a href="https://www.google.com"> Link!</a></p></body>';
$dom = new DOMDocument;
$dom->loadHTML($foo);//parse the DOM here
$links = $dom->getElementsByTagName('a');//get all links
foreach($links as $link)
{//$links is DOMNodeList instance, $link is DOMNode instance
    $replaceText = $link->nodeValue.': '.$link->getAttribute('href');//inner text: href attribute
    $replaceNode = $dom->createTextNode($replaceText);//create a DOMText instance
    $link->parentNode->replaceChild($replaceNode, $link);//replace the link with the DOMText instance
}
echo $dom->saveHTML();//echo the HTML after edits...

これは次のようになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p> Some BS and  Link!: https://www.google.com</p></body></html>

マニュアルを読むことから始めてDOMDocumentここで使用しているすべてのメソッド (および関連するクラス) をクリックして進んでください。クライアント側 JS の DOM API のような DOMDocument API はかさばり、実際にはそれほど直感的ではありませんが、それがまさにその方法です...
doctype を使用せずに実際の html をエコーすることは、saveXMLメソッドを使用して行うことができます。文字列操作... 全体として、このコードを基礎として使用し、提供されたリンクを使用して、目的の場所に到達するのはそれほど難しくありません。

于 2013-08-23T08:47:39.963 に答える