1

我正在使用子字符串扩展/压缩博客文章,其中第二个子字符串位于按下按钮时激活的 div 标记内(因此连接两个子字符串)

代码如下所示:

<?php echo substr($f2, 0, 50);?>
<div id="<?php echo $f4; ?>" class = "hidden">
<?php echo substr($f2, 0, 5000);?></div>

然而,我的问题是,如果博客文章包含 html 标签(例如 <\li>、<\p>)并且初始子字符串在该组标签终止之前结束,那么显然它会导致主要的格式问题。有没有办法使用我当前的方法解决这个问题,或者我需要使用 XML 样式表之类的东西(在这种情况下,请指导我完成它)

编辑:

我已经使用 DOMDocument 半完成了我的请求。

$second = substr($f2, 50, 5000);
$dom= new DOMDocument();
    $dom->loadHTML($second);      
    $xpath = new DOMXPath($dom);
    $body = $xpath->query('/html/body');
$secondoutput = ($dom->saveXml($body->item(0)));


$first = substr($f2, 0, 50);
$dom= new DOMDocument();
    $dom->loadHTML($first);      
    $xpath = new DOMXPath($dom);
    $body = $xpath->query('/html/body');
$firstoutput = ($dom->saveXml($body->item(0)));

这有效,除非当第二个子字符串被调用时,它不再具有以前的格式,因为它已被纯化。当调用第二个子字符串时,有什么方法可以重新附加上一个 HTML 标记?

4

3 回答 3

0

您可能想使用Tidy来修复被截断的 HTML。

于 2012-06-01T12:00:47.957 回答
0

您可能希望使用 DOMDocument 或SimpleHTMLDOM解析整个 HTML 代码,然后删除最后一个元素,直到帖子足够短。

于 2012-06-01T12:02:57.333 回答
0

这个问题有不同的解决方案,但substr不是特别合适(正如你提到的)。您可以使用正则表达式或 HTML 解析器。

继续复制这个问题的解决方案。

于 2012-06-01T12:15:22.130 回答