0

次に例を示します。

$contentこのdivから作成されたDOMオブジェクトがあります:

<div class="content">&quot;test&quot; <!-- m -->
    <a class="postlink" href="http://imaginethisisareallylongurl.com">http://imagin...longurl.com</a><!-- m -->
    <img src="./images/smilies/icon_e_biggrin.gif" alt=":D" title="Very Happy" /> &quot;test&quot;
    <img src="./images/smilies/icon_e_sad.gif" alt=":(" title="Sad" /> sl
    <img src="./images/smilies/icon_e_biggrin.gif" alt=":D" title="Very Happy" />
    <img src="./images/smilies/icon_e_sad.gif" alt=":(" title="Sad" /> ok
</div>

そして、私はこの出力を取得したいと思います:

"test" http://imaginethisisareallylongurl.com :D :( sl :D :( ok

div内の画像タグはalt属性に置き換えられ、URLは完全なhref属性に置き換えられます。

これどうやってするの?

編集 :

このようなもの:

    foreach($content->find('a[class=postlink]') as $postlink)
    {
        $postlink->outertext = $postlink->href;

    }

動作しません。この特定のリンクを参照して$contents->innertext変更できるようにするにはどうすればよいですか?

4

1 に答える 1

0

ドキュメントをもっと注意深く読むべきでした。次のように解析動作をカスタマイズできます。

$html->set_callback('custom_parse'); 

$html元の DOMDocument は どこにありますか。

function custom_parse($element)
{
    if (isset($element->class)){
        if($element->class=='postlink'){
            $element->outertext = $element->href;
        }
    } 

    if (isset($element->innertext)){   
        $element->innertext = str_replace('<!-- m -->', '', $element->innertext);
    }

    if (isset($element->outertext)){   
        if ($element->tag=='img' and isset($element->alt)){
            $element->outertext = $element->alt;
        }
    }

}

次に、私のコンテンツオブジェクトでこれを呼び出すことができます:

function parse_content($content)
{
    $content = $content->innertext;
    $content = strip_tags($content);
    $content = html_entity_decode($content);
    return $content;
} 

これが「正しい」方法であるかどうかはわかりませんが、目的の出力が返されます。

于 2012-06-22T04:39:35.357 に答える