我正在使用子字符串扩展/缩小博客文章,其中第二个子字符串位于div标签内,当按下按钮时激活该标签(因此连接两个子字符串)
代码如下所示:
<?php echo substr($f2, 0, 50);?>
<div id="<?php echo $f4; ?>" class = "hidden">
<?php echo substr($f2, 0, 5000);?></div>
我的问题是,如果博客帖子包含html标签(例如&lt; \ li&gt;,&lt; \ p&gt;)并且初始子字符串在该组标记终止之前结束,那么显然它会导致严重的格式问题。 有没有办法解决这个问题,使用我当前的方法,或者我需要使用类似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标记?
答案 0 :(得分:0)
您可能希望使用Tidy来修复截断的HTML。
答案 1 :(得分:0)
您可能希望使用DOMDocument或SimpleHTMLDOM解析整个HTML代码,然后删除最后一个元素,直到帖子足够短。
答案 2 :(得分:0)
此问题有不同的解决方案,但substr
并不是特别合适(正如您所提到的)。
您可以使用正则表达式或HTML-Parser。
继续并从this question复制解决方案。