相关疑难解决方法(0)

如何将PHP中的字符串截断为最接近一定数量字符的单词?

我有一个用PHP编写的代码片段,它从数据库中提取一个文本块并将其发送到网页上的小部件.原始文本块可以是冗长的文章或短句或短句; 但对于这个小部件,我不能显示超过200个字符.我可以使用substr()来切断200个字符的文本,但结果会在单词中间切断 - 我真正想要的是在200个字符之前在最后一个单词的末尾剪切文本.

php string function

177
推荐指数
9
解决办法
17万
查看次数

确保PHP substr完成单词而不是字符

我知道如何使用substr函数,但是这将很快结束一个单词的中间字符串.我希望字符串在一个单词的结尾处结束我将如何进行此操作?它会涉及正则表达吗?任何帮助非常感谢.

这就是我到目前为止所拥有的.只是SubStr ......

echo substr("$body",0,260);
Run Code Online (Sandbox Code Playgroud)

干杯

php substring

55
推荐指数
5
解决办法
8万
查看次数

限制 Woocommerce 中的产品简短描述长度

我在我的 WordPress 网站上使用以下代码来缩短我在 WooCommerce 上的描述摘录,如果我输入 14 个或更少的字符,它就可以正常工作。一旦我输入超过 14 个字符,它就会显示完整的简短描述。

add_action( 'woocommerce_after_shop_loop_item_title', 'lk_woocommerce_product_excerpt', 35, 2);
if (!function_exists('lk_woocommerce_product_excerpt'))
{
    function lk_woocommerce_product_excerpt()
    {
        $content_length = 14;
        global $post;
        $content = $post->post_excerpt;
        $wordarray = explode(' ', $content, $content_length + 1);
        if(count($wordarray) > $content_length) :
            array_pop($wordarray);
            array_push($wordarray, '...');
            $content = implode(' ', $wordarray);
            $content = force_balance_tags($content);
            $content = substr($content, 0, 14);

        endif;
        echo "<span class='excerpt'><p>$content...</p></span>";
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

谢谢。

php wordpress product woocommerce hook-woocommerce

6
推荐指数
1
解决办法
9076
查看次数

在不截断单词的情况下截断php中的字符串

可能重复:
从数组中提取固定数量的字符,仅完整单词

当它们的长度超过20个字符时,我需要截断字符串。言语必须始终保持在一起,这样:

跟我的小朋友打个招呼。

变成这个:

跟我打个招呼...

代替这个:

跟我打个招呼...

我基于一个非常老的线程中的注释设置了此功能。这个正则表达式的问题是它删除了句子的最后一个单词(当有两个或更多单词时)。

function gen_string($string,$min=20) {
    $new = preg_replace('/\s+?(\S+)?$/','',substr($string,0,$min));
    if(strlen($new) < strlen($string)) $new .= '&hellip;';
    return $new;
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我处理正则表达式吗?谢谢!

解决方案通过麦金太尔(少数润饰)

function gen_string($string,$max=20) {
    $tok = strtok($string,' ');
    $sub = '';
    while($tok !== false && mb_strlen($sub) < $max) {
        if(strlen($sub) + mb_strlen($tok) <= $max) {
            $sub .= $tok.' ';
        } else {
            break;
        }
        $tok = strtok(' ');
    }
    $sub = trim($sub);
    if(mb_strlen($sub) < mb_strlen($string)) $sub .= '&hellip;';
    return $sub; …
Run Code Online (Sandbox Code Playgroud)

php regex string

1
推荐指数
1
解决办法
2997
查看次数