【问题标题】:Build a function capable to trim the string with complete word构建一个能够用完整的单词修剪字符串的函数
【发布时间】:2014-08-08 07:12:03
【问题描述】:

任何人都可以帮助我构建一个 PHP 函数,该函数能够执行带 HTML 标记异常的 strip_tags 并仅在单词结尾处修剪文本。

说明

我有一个这样的字符串:

<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); ?>

但是在这里我得到了像 点击这里去 ch 我需要像 点击这里改变

任何人都可以帮助我构建这样的功能吗??

【问题讨论】:

  • 你尝试了什么?向我们展示代码...
  • 显示想要的结果
  • @machineaddict 现在正在使用 substr($content,0,100) 用于修剪字符串,但是没有完成就删掉了我的话。那么还有其他选择可以让这个词完整吗??
  • 请编辑您的问题并发布您在其中说的代码。我也想看看这个问题的答案:)。
  • 我只需要在词尾之后进行剪裁在词尾之前剪切文本会更合理

标签: php html wordpress codeigniter


【解决方案1】:

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("\r\n", "\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 标签的可选参数。

【讨论】:

  • 感谢您的回答:)
【解决方案2】:
$str='Thanks for submitting your request.';$part1 = substr($str,0,8);
$strword =explode(' ',str_replace($part1,'',$str));
echo $part1.$strword[0];

【讨论】:

  • 感谢您的解决方案。
猜你喜欢
  • 2011-12-05
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多