Php 限制文本并确保没有打开的标记
因此,我有一个文章列表,我有一个页面,其中一次显示4篇文章,然后将文章描述缩短到1000个字符,并允许用户“阅读更多”,我的问题是在每篇文章中都可能有标签,即:Php 限制文本并确保没有打开的标记,php,truncate,Php,Truncate,因此,我有一个文章列表,我有一个页面,其中一次显示4篇文章,然后将文章描述缩短到1000个字符,并允许用户“阅读更多”,我的问题是在每篇文章中都可能有标签,即:或等,如何在截断文本时查看div或调用的文本中是否有任何打开的标记 下面是它现在的样子 $sum = strip_tags($article, '<a><i><b><u><center><br><img><a><span><i
或
等,如何在截断文本时查看div或调用的文本中是否有任何打开的标记
下面是它现在的样子
$sum = strip_tags($article, '<a><i><b><u><center><br><img><a><span><iframe>');
if (strlen($sum) > 1000) {
$sumCut = substr($sum, 0, 1000);
$sum = substr($sumCut, 0, strrpos($sumCut, ' ')).'... <div class="right"><a href="article-' .$record[nid]. '">Read More</a></div>';
}
echo $sum;
$sum=strip_标签($article');
}
echo$sum;
比如说
如果我有
弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉利亚。弗林吉
这将是Quisque imperdiet imperdiet fronnilla.Quisque sit amet nibh odio.Fusce sit amet massa vivate mi faucibus viverra.
但是,如果我将截断数字设置为10,则该标记将保持打开状态,因此所有后缀都将以斜体显示。使用,在前X个字符内搜索打开的标记(其中X是截断数字)。如果为真,则添加到字符串中
基本上,(伪代码)
if(first10chars.contains[在此处使用strpos]“和!.contains”“){
$endstr.=”;
}
这是一个非常糟糕的方法,但它会起作用,所以动态让我接近了,但使用strpos()
是关键,我在代码中添加了这个if((strpos($sum,)&(!strpos($sum,)){echo”“;)
我允许的每个标签都有一个类似的标签,下一步要做的是找出如何确保文章结尾附近没有图像或iFrame,我将对此进行编辑以解释我是如何做到这一点的,但现在这是我的代码
$sum = strip_tags($article, '<a><i><b><u><center><br><img><a><span><iframe>');
if (strlen($sum) > 1000) {
$sumCut = substr($sum, 0, 1000);
$sum = substr($sumCut, 0, strrpos($sumCut, ' '));
$cut = 1;
}else{
$cut = 0; }
echo $sum;
if ((strpos($sum, '<i>')) && (!strpos($sum, '</i>'))) { echo "</i>"; }
if ($cut==1) { echo '... <div class="right"><a href="article-' .$record[nid]. '">Read More</a></div>'; }
$sum=strip_标签($article,;)
编辑:
好的,我想出了一个比确保文章末尾没有图像更好的解决方案,我只是简单地设置了divsoverflow:hidden;
,它可以根据图像调整大小
编辑:
我也有一个问题,打破了一个
标记的中间,这给我留下了你到底是什么意思,看看是否有打开的标记?我会更新来解释…我想你剥离了所有的标记。除了我允许的标记
之外,我发布了一些你可以构建的东西。这让我走上了正确的轨道k、 我还回答了我提出的最终解决方案好的,谢谢你这么做,大多数用户没有,这会让人们留下同样的问题:P
$sum = strip_tags($article, '<a><i><b><u><center><br><img><a><span><iframe>');
if (strlen($sum) > 1000) {
$sumCut = substr($sum, 0, 1000);
$sum = substr($sumCut, 0, strrpos($sumCut, ' '));
$cut = 1;
}else{
$cut = 0; }
echo $sum;
if ((strpos($sum, '<i>')) && (!strpos($sum, '</i>'))) { echo "</i>"; }
if ($cut==1) { echo '... <div class="right"><a href="article-' .$record[nid]. '">Read More</a></div>'; }