0

wordpress 関数を作成しており、コンテンツ内の画像が PDF または DOC ファイルへのリンクを含むタグでラップされているかどうかを判断する必要があります。

<a href="www.site.com/document.pdf"><img src="../images/image.jpg" /></a>

PHPでこれを行うにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

これには正規表現を使用しないことを強くお勧めしますエラーが発生しやすく読みにくいだけでなく、コンテンツを簡単に操作することもできません。

コンテンツを DomDocument にロードし、すべての<img>要素を取得して、親が要素であるかどうかを検証する方がよいでしょう<a>hrefあとは、属性の値が目的の拡張子で終わっているかどうかを検証するだけです。

非常に大雑把な実装は、次のようになります

<?php

$sHtml = <<<HTML
<html>
<body>
    <img src="../images/image.jpg" />
    <a href="www.site.com/document.pdf"><img src="../images/image.jpg" /></a>
    <a href="www.site.com/document.txt"><img src="../images/image.jpg" /></a>
    <p>this is some text <a href="site.com/doc.pdf"> more text</p> 
</body>
</html>
HTML;

$oDoc = new DOMDocument();
$oDoc->loadHTML($sHtml);
$oNodeList = $oDoc->getElementsByTagName('img');

foreach($oNodeList as $t_oNode)
{
    if($t_oNode->parentNode->nodeName === 'a')
    {
        $sLinkValue = $t_oNode->parentNode->getAttribute('href');
        $sExtension = substr($sLinkValue, strrpos($sLinkValue, '.'));

        echo '<li>I am wrapped in an anchor tag '
           . 'and I link to  a ' . $sExtension . ' file '
        ; 
    }
}
?>

正確な実装は、読者の演習として残しておきます ;-)

于 2013-04-18T11:02:49.440 に答える