任何人都可以帮助我建立一个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 = '…')
{
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];