PHPackages                             wangqs/cut\_elegant\_string - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. wangqs/cut\_elegant\_string

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

wangqs/cut\_elegant\_string
===========================

优雅的将中文（中英混合）字符串裁剪为长度范围内的句子

v1.0.2(4y ago)26MITPHPPHP &gt;=5.6

Since May 20Pushed 4y ago1 watchersCompare

[ Source](https://github.com/wqsacy/cut_elegant_string)[ Packagist](https://packagist.org/packages/wangqs/cut_elegant_string)[ RSS](/packages/wangqs-cut-elegant-string/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (3)DependenciesVersions (4)Used By (0)

项目说明
====

[](#项目说明)

优雅的将中文（中英混合）字符串裁剪为长度范围内的句子，主要用于大段文字分页、分局等场景。

主要解决2痛点：

1. 中英文混合字符串常规的裁剪无非是按字数（长度）裁剪，或者按段落、标点等特征值裁剪.无法【优雅】的裁剪出合适字数（长度）的整句句子。
2. 中英文混合的字符串，由于编码方式原因，常规裁剪方法，无法【优雅】的中文按单个汉字，英文按单词进行统计长度和裁剪.

优雅的处理结果：

1. 按规定的长度，进行整句字符串裁剪，默认会根据中文标点进行整句判断，尽量不断句、不裁剪英文单词。
2. 带有分段（换行）的字符串，可以自行决定保留原分段，还是无视分段，重新合并裁剪。
3. 整句判断标识（默认中文标点符号）、段落处理、采集长度等均可自定义。

Warning
-------

[](#warning)

⚠️ 请使用 utf-8编码。

⚠️本项目抽离于本人的其他生产项目，本着方便易用的原则，实际使用了各类字符串函数和方法达到分割效果，虽考虑了效率的处理，但仅建议使用在小文本的截剪处理上，理论上万字以内的效率和内存开销均在可控范围内。不建议直接处理万字以上的大段文本，请结合实际情况自行考量使用效率和内存开销。

⚠️ 仅能处理字符串，不能直接处理包含html标签的字符串，为保证结果，会直接清理掉 html标签！

Installing
----------

[](#installing)

```
    $ composer require wangqs/cut_elegant_string
```

Usage
-----

[](#usage)

#### Demo

[](#demo)

常规用法:

```

    $config = [
		'endMark' => [ '。' , '？' , '！' ] ,
		'length'  => 150
	];

	$cut = new StringCut( $config );

    echo $cut->get('你的长字符串...')->toArray();

```

静态方法：

```

    echo StringCut::init()
                    ->length( 150 )
                    ->get('你的长字符串...')
                    ->toJson();

```

各参数可通过链式调用自定义：

```

    $result =  StringCut::init()
	                 ->paragraph( false )  // 是否保持原段落,默认false
	                  ->endMark( '。' )  //整句判断标识,默认中文标点 ['。' , '？' , '！']
	                  ->length( 100 )//裁剪长度,默认120
	                  ->offset( 0.2 )//最大可偏移量,默认0.2（满足整句裁剪需求）
	                  ->get( '你的长字符串...' )
	                  ->toArray() );

```

License
-------

[](#license)

MIT

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

1505d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/38206909?v=4)[qishan.wang](/maintainers/wqsacy)[@wqsacy](https://github.com/wqsacy)

---

Top Contributors

[![wqsacy](https://avatars.githubusercontent.com/u/38206909?v=4)](https://github.com/wqsacy "wqsacy (1 commits)")

### Embed Badge

![Health badge](/badges/wangqs-cut-elegant-string/health.svg)

```
[![Health](https://phpackages.com/badges/wangqs-cut-elegant-string/health.svg)](https://phpackages.com/packages/wangqs-cut-elegant-string)
```

###  Alternatives

[spatie/mjml-sidecar

Compile MJML to HTML using Sidecar

1359.5k](/packages/spatie-mjml-sidecar)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
