0

下面的代码在 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>标签。

4

1 回答 1

5

p元素包含短语内容div在短语内容中无效,在流内容中有效。(将 adiv放入 ap就像将 ap放入 a一样p。)因此浏览器正在充分利用无效标记。

尝试使用 aspan而不是 a div

于 2012-11-13T14:28:45.223 回答