使用PHP为每个img添加父级

时间:2013-03-01 09:47:38

标签: php javascript jquery html dom

我想用PHP为每个img添加父级。 我可以在jQuery中使用wrap()执行此操作,但我不知道如何使用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>

2 个答案:

答案 0 :(得分:3)

Simple HTML DOM可能是你的答案。

答案 1 :(得分: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>