使用 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 而言,您可以对 <div>
执行的几乎所有操作都可以像对 <img>
一样轻松完成,而无需包装器。这并不是说它是错误的。有些情况下是必要的,但有时当问“我该怎么做?”时,最好考虑“我应该这样做吗?”或“还有其他方法吗?”。
【参考方案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 添加父级的主要内容,如果未能解决你的问题,请参考以下文章