首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >html文本的substr

html文本的substr
EN

Stack Overflow用户
提问于 2019-06-22 09:11:56
回答 3查看 134关注 0票数 2

基本上,我想要的只是计算单词,忽略句子中的html属性,如:<p></p> <span></span等。

如果单词超出了字符限制,它应该在末尾加上省略号。

,这是我的当前代码:

代码语言:javascript
复制
function limitText($length, $value)
{
    return strlen($value) > $length ? substr($value, 0, $length) . '...' : $value;
}

这段代码的问题是,它还将计算html。

当前行为:

代码语言:javascript
复制
echo limitText(6, '<p>Hello</p>');
// displays:  <p>Hel...


echo limitText(2, '<p>Hello</p>');
// displays:  <p...

echo limitText(4, '<p>Hello</p>');
// displays:  <p>H...

echo limitText(8, '<p>cutie</p> <p>patootie</p>');
// displays:  <p>cutie...

期望的结果:

代码语言:javascript
复制
echo limitText(6, '<p>Hello</p>');
// displays:  <p>Hello</p>


echo limitText(2, '<p>Hello</p>');
// displays:  <p>He...</p>

echo limitText(4, '<p>Hello</p>');
// displays:  <p>Hell...</p>

echo limitText(8, '<p>cutie</p> <p>patootie</p>');
// displays:  <p>cutie</p> <p>pat...</p>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-22 10:55:17

我的想法是替换></之间的字符串

代码语言:javascript
复制
function limitText($length, $value)
{
    return preg_replace_callback('|(?<=>)[^<>]+?(?=</)|', function ($matches) use (&$length)
    {
        if($length <= 0)
            return '';

        $str = $matches[0];
        $strlen = strlen($str);
        if($strlen > $length)
            $str = substr($str, 0, $length) . '...';
        $length -= $strlen;
        return $str;
    },
    $value);
}
票数 1
EN

Stack Overflow用户

发布于 2019-06-22 10:21:48

您应该将strip_tags与str_replace结合起来,比如:

代码语言:javascript
复制
    function limitText($length, $value)
    {
        //Get the real text
        $textValue = strip_tags($value);
        //get substr of real text
        $realText = strlen($textValue) > $length ? substr($textValue, 0, $length) . '...' : $textValue;
        // replace real text with the sub text
        return str_replace($textValue, $realText, $value);
    }
票数 0
EN

Stack Overflow用户

发布于 2019-06-22 11:44:47

试试这个:-

代码语言:javascript
复制
function limitText($length, $value){
    return substr(strip_tags($value), 0, $length);

}
echo limitText(1, '<h1>Hello, PHP!</h1>');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56714175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档