构建一个能够用完整单词修剪字符串的函数



任何人都可以帮助我建立一个PHP函数,能够执行strip_tags与HTML标记异常和修剪文本只在一个词的结尾。

我有一个像这样的字符串:

<p><a href="#">Click here</a> to change the picture in my website.<span>Powered</span><em> By <em> administrator</p>

我只需要一个功能,能够按限制修剪内容。假设我给出的限制是在单词的中间结束,我只需要在单词的末尾执行修剪。

像这样我提供修剪限制为10,可能是10在单词cha中间结束,我需要修剪的幸福必须显示我的完整单词,如更改

还需要使用例外选项从字符串中剥离HTML标记的选项。

我用的是这样的

<?php $string ='<p><a href="#">Click here</a> to change the picture in my website.<span>Powered</span><em> By <em> administrator</p>'; $string = strip_tags($string,'<p><a><span>'); $string = substr($string,0,35); ?>

但是这里我得到了像一样的输出,点击这里,我需要像一样的输出,点击这里,更改

谁能帮我建立一个这样的函数??

CodeIgniter有一个非常好的函数可以做到这一点:

/**

* Character Limiter
 *
 * Limits the string based on the character count.  Preserves complete words
 * so the character count may not be exactly as specified.
 *
 * @access  public
 * @param   string
 * @param   integer
 * @param   string  the end character. Usually an ellipsis
 * @return  string
 */
if ( ! function_exists('character_limiter'))
{
    function character_limiter($str, $n = 500, $end_char = '&#8230;')
    {
        if (strlen($str) < $n)
        {
            return $str;
        }
        $str = preg_replace("/s+/", ' ', str_replace(array("rn", "r", "n"), ' ', $str));
        if (strlen($str) <= $n)
        {
            return $str;
        }
        $out = "";
        foreach (explode(' ', trim($str)) as $val)
        {
            $out .= $val.' ';
            if (strlen($out) >= $n)
            {
                $out = trim($out);
                return (strlen($out) == strlen($str)) ? $out : $out.$end_char;
            }
        }
    }
}

用法非常简单:

$string ='<p><a href="#">Click here</a> to change the picture in my website.<span>Powered</span><em> By <em> administrator</p>';
$string = strip_tags($string,'<p><a><span>');    
$string = character_limit($string, 35);

您还可以修改该函数,使其具有另一个可选参数,用于剥离html标记

$str='Thanks for submitting your request.';$part1 = substr($str,0,8);
$strword =explode(' ',str_replace($part1,'',$str));
echo $part1.$strword[0];

最新更新