使用php在html代码中找到标签的结尾

时间:2012-07-26 20:33:03

标签: php wordpress

我正在修改Wordpress主题,我希望在主页上显示故事中显示的有限数量的字符,并包含指向其余故事的链接。这应该自动完成,而作者不必指定中断发生的点。但是,我想允许使用html标签,但我不想在标签关闭之前拆分故事。

我正在使用的代码包含函数strip_tags,以确保字符中断不会出现在html标记的中间。但是,内容作者希望能够包含一些标记,并且随着时间的推移,之前的网站管理员修改了主题以允许某些标记,例如<p><i>等。但是,现在我正在网站上工作,内容作者真的希望能够包含链接和图像等内容。我尝试评论strip_tags命令,但现在理解为什么它被包含在内,因为如果文本位于标记的中间或标记未正确关闭,则将文本拆分到任意点可能会有问题。

我正在试图弄清楚php是否有确保标签关闭的规定,所以我可以在拆分文本之前做到这一点。或许还有其他一些选择。我正在使用的代码片段如下所示。

$content = get_the_content('', $stripteaser, $more_file);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);

//Commenting out following line causes problems
//$content = strip_tags($content, '<p><br><b><i><strong><em>');

if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {
    $content = substr($content, 0, $espacio);
    $content = $content;
    echo "<p>";
    echo $content;
    echo "...";
    echo "&nbsp;<a rel='nofollow' href='";
    the_permalink();
    echo "'>".$more_link_text."</a>";
    echo "</p>";
}

1 个答案:

答案 0 :(得分:0)

如果你不想使用the_excerpt(),你可以阅读更多关于More Tag的信息,以便在不使用过滤器或正则表达式的情况下完成你所描述的一切。

但是,如果您真的好奇使用正则表达式来检测更多标记,那么这将是您需要的字符串:

/<span id="more-\d+"><\/span>|<!--more-->/i