使用 PHP 为每个 img 添加父级

Posted

技术标签:

【中文标题】使用 PHP 为每个 img 添加父级【英文标题】:Add parent for each img with PHP 【发布时间】:2013-02-15 18:41:29 【问题描述】:

我想用 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>

【问题讨论】:

嗯? oO如何在 PHP 中生成标记? 为什么要在 PHP 中完成?如果你强烈想要这个,那么你必须通过字符串函数或正则表达式来做到这一点。你想要那个代码吗?? @KD 或者使用 DOM 处理器... 为什么需要这样做?添加额外的标记几乎没有什么好处。就 CSS 和 JS 而言,您可以对 &lt;div&gt; 执行的几乎所有操作都可以像对 &lt;img&gt; 一样轻松完成,而无需包装器。这并不是说它是错误的。有些情况下是必要的,但有时当问“我该怎么做?”时,最好考虑“我应该这样做吗?”或“还有其他方法吗?”。 【参考方案1】:

Simple html DOM 可能是您的答案。

【讨论】:

【参考方案2】:

你可以用我下面做的函数来做。

<?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>

【讨论】:

以上是关于使用 PHP 为每个 img 添加父级的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中的图像下方添加 noscript 标签?

如何使用PHP给html<img>标签添加<div>?

PHP 实现自动添加或者替换 内容的IMG标签的 alt title 属性

php匹配<img/>,添加width,height

我应该在每个拥有父级的实体上添加一个所有者组件吗?

html设计时 img与元素存在间距的处理