如何限制PHP中HTML字符串显示的字符数量?

时间:2017-08-25 10:04:53

标签: php html tags

我正在尝试找到一种在PHP中显示HTML字符串的一部分的方法。例如,字符串就是这样的。

<p align="center">Lorem ipsum <b>dolor sit amet</b>, consectetur <u>adipiscing elit</u>. Vestibulum nec augue ut elit semper sagittis. Etiam consectetur odio id urna condimentum, ultrices porttitor quam dapibus. Cras tincidunt ex gravida, bibendum nulla quis, egestas urna. Praesent mattis, ante et lobortis porttitor, risus est fermentum purus, at pretium sapien turpis vitae tellus. Maecenas lacinia condimentum urna eget vestibulum. Cras sodales, purus sit amet luctus consequat, tortor dolor viverra nibh, ut feugiat ante sem ac justo. Suspendisse potenti. Interdum et malesuada fames ac ante ipsum primis in faucibus. Cras eu ornare tortor. Mauris accumsan, ex sit amet luctus posuere, velit neque ultricies orci, faucibus faucibus elit elit vitae massa. Nulla tempus molestie est id facilisis. Sed dignissim efficitur orci, ut accumsan magna pellentesque a. Sed tempor fringilla arcu sed porttitor.</p>

如上所示,字符串包含一些HTML元素。我想显示字符串的前60个字符,这意味着我想要显示如下内容:

<p align="center">Lorem ipsum <b>dolor sit amet</b>, consectetur <u>adipiscing elit</u>. Ves</p>

在字符计数期间不考虑HTML标记,并且还应关闭段落标记。有没有人取得过这样的成就?

1 个答案:

答案 0 :(得分:0)

希望这个会有所帮助。

Try this code snippet here

<?php
ini_set('display_errors', 1);
$string ='<p align="center">Lorem ipsum <b>dolor sit amet</b>, consectetur <u>adipiscing elit</u>. Vestibulum nec augue ut elit semper sagittis. Etiam consectetur odio id urna condimentum, ultrices porttitor quam dapibus. Cras tincidunt ex gravida, bibendum nulla quis, egestas urna. Praesent mattis, ante et lobortis porttitor, risus est fermentum purus, at pretium sapien turpis vitae tellus. Maecenas lacinia condimentum urna eget vestibulum. Cras sodales, purus sit amet luctus consequat, tortor dolor viverra nibh, ut feugiat ante sem ac justo. Suspendisse potenti. Interdum et malesuada fames ac ante ipsum primis in faucibus. Cras eu ornare tortor. Mauris accumsan, ex sit amet luctus posuere, velit neque ultricies orci, faucibus faucibus elit elit vitae massa. Nulla tempus molestie est id facilisis. Sed dignissim efficitur orci, ut accumsan magna pellentesque a. Sed tempor fringilla arcu sed porttitor.</p>';
$resultString="";
$counter=0;
while(!empty($string[0]))
{
    if(preg_match("/^<\/?[a-z]+\s*.*?>/",$string,$matches))
    {
        $resultString.=$matches[0];
        $strlen=strlen($matches[0]);
        $string=substr_replace($string, "",0,$strlen);
    }
    elseif($counter<60)
    {
        $resultString.=$string[0];
        $string=substr_replace($string, "",0,1);
        $counter++;
    }
    elseif($counter>=60)
    {
        $string=substr_replace($string, "",0,1);
    }
}
echo $resultString;