【发布时间】:2012-11-13 14:23:45
【问题描述】:
下面的代码在 WordPress 内容中搜索单词并用链接和 div 替换这些单词。它会产生一个问题,即 div 会关闭它插入的 <p> 标记。
$myposts = get_pages(args...);
$replace = array();
$i = 1;
foreach( $myposts as $post ) {
setup_postdata($post);
$replace[get_the_title()] = '<a href="#popupBasic' . $i . '" data-rel="popup">' . get_the_title() . '</a><div data-role="popup" class="tooltipBox" id="popupBasic' . $i . '">' . get_the_content() . '</div>';
$i++;
}
$text = str_replace(array_keys($replace), $replace, $text);
为什么 str_replace 会像这样破坏<p> 标签?
<div>
<p>Some random text thats been <a href="#" class="link">cutt</a></p><div style="display: none;"><!-- placeholder --></div> off.<p></p>
</div>
如果它不能在 PHP 中修复,我们可以用 jQuery 修复它吗?
我想把那个被切断的词放回去,在这种情况下是“关闭”。进入链接后关闭的<p> 标记。最后还要去掉空的<p>标签。
【问题讨论】:
-
这是适当的行为。问题是,您希望最终结果是什么?
-
你为什么要在明显是 DOMDocument 上用 str_replace'ing
-
@EliasVanOotegem:显然不是,他在做服务器端 PHP。
-
如果您的 div 需要成为 div,请将其附加到文档的末尾并绝对定位。如果没有,请改用 span 并在需要时使用 CSS 将其设为
display:block。
标签: php jquery wordpress str-replace