4

我想用 PHP 为每个 img 添加父级。我可以wrap()在 jQuery 中做到这一点,但我不知道如何使用 PHP。

HTML:

<div id="main">
  <img src="..." />
  <img src="..." />
  <img src="..." />
  <img src="..." />
</div>

JS:

$("#main img").each(function(){ $(this).wrap('<div class="photo" />'); });

结果 HTML:

<div id="main">
  <div class="photo"><img src="..." /></div>
  <div class="photo"><img src="..." /></div>
  <div class="photo"><img src="..." /></div>
  <div class="photo"><img src="..." /></div>
</div>
4

2 回答 2

3

简单的 HTML DOM可能是您的答案。

于 2013-03-01T09:50:58.143 回答
1

您可以使用我在下面创建的功能来做到这一点。

<?php
$page = '
    <body>
        <div id="main">
            <img src="..." />
            <img src="..." />
            <img src="..." />
            <img src="..." />
        </div>
    </body>
';

echo $page = wrapImg ( $page, 0 );

function wrapImg ( $page, $offset )
{
    if ( FALSE !== ( $startImg = strpos( $page, '<img', $offset ) )
      && FALSE !== ( $endImg = strpos( $page, '/>', $startImg ) )
    ) {
        $before = '<div class="photo">';
        $after = '</div>';

        $start = substr( $page, 0, $startImg );
        $img = substr( $page, $startImg, $endImg+2-$startImg );
        $end = substr( $page, $endImg+2);

        $page = $start . $before . $img . $after . $end;
        $length = ($startImg + strlen( $before . $img . $after )-1);

        $page = wrapImg ( $page, $length );
    }

    return $page;
}
?>

结果将是:

    <body>
        <div id="main">
            <div class="photo"><img src="..." /></div>
            <div class="photo"><img src="..." /></div>
            <div class="photo"><img src="..." /></div>
            <div class="photo"><img src="..." /></div>
        </div>
    </body>
于 2013-03-01T11:02:25.337 回答