PHP simple_html_dom -> обернуть элемент новым тегом привязки

Я использую simple_html_dom для управления способом встраивания изображений, управляемых CMS, на страницу. Однако я хотел бы иметь возможность обернуть любые изображения, которые еще не заключены в теги привязки, в новый тег привязки, но я не могу понять, как обернуть элемент simple_html_dom новым тегом.

Мой код до сих пор:

$content = str_get_html($content);
if(is_object($content))
{
    $elements = $content->find('img');
    foreach($elements as $element)
    {
/*
GET INFORMATION ABOUT WHAT IMAGE THIS IS - ALL FINE
*/          
$classStr = $element->class;
        if(trim(strlen($classStr)) > 0)
        {
            $needle = "wp-image-";
            $after = substr($classStr, strpos($classStr, $needle) + strlen($needle));
            if(strpos($after, " "))
            {
                $imageID = substr($after, 0, strpos($after, " "));
            }
            else
            {
                $imageID = $after;
            }   
/*
Get new image to link to
*/
$image = tona_get_image_by_id($imageID, "full");

/*
CHECK IF PARENT OF IMAGE IS AN ANCHOR... IF SO CHANGE THE LINK
*/

            $elementParent = $element->parent();
            if(isset($elementParent->href)) 
            {
                $elementParent->href = $image["src"];
                $elementParent->class .= " newAnchorClass ";    
            }
/*
IF NOT ADD A NEW ANCHOR TAG ** HELP **
*/

            echo "IMG: " . $imageID . " " . $image["src"] . "<br/>";    
            $element->href = $image["src"];
        }
    }
}

Заранее спасибо за вашу помощь.


person Tomtids    schedule 08.05.2012    source источник
comment
в чем собственно проблема? Что не так в/с вашим кодом?   -  person Leri    schedule 08.05.2012
comment
Привет, PLB. Я не могу понять, как обернуть свое изображение (содержащееся в элементе $) новым якорем. так что ‹img› становится ‹a href=›‹img›‹/a›   -  person Tomtids    schedule 08.05.2012


Ответы (1)


Из документации на вкладке "Советы":
$e->outertext = '<div class="wrap">' . $e->outertext . '<div>'

Если вы хотите дополнительно манипулировать элементом, вы можете использовать временную переменную для воссоздания dom. В вашем случае это будет:

// '$element' is the element to be wrapped
$tempHtml = str_get_html('<a>' . $element->outertext . '</a>');
$link = $tempHtml->find('a', 0);
// '$src' is the url of the link
$link->href = $image['src'];
person verdy    schedule 19.12.2012