wangqs / cut_elegant_string
优雅的将中文(中英混合)字符串裁剪为长度范围内的句子
v1.0.2
2022-05-20 17:20 UTC
Requires
- php: >=5.6
This package is auto-updated.
Last update: 2024-10-20 22:16:21 UTC
README
优雅的将中文(中英混合)字符串裁剪为长度范围内的句子,主要用于大段文字分页、分局等场景。
主要解决2痛点:
- 中英文混合字符串常规的裁剪无非是按字数(长度)裁剪,或者按段落、标点等特征值裁剪.无法【优雅】的裁剪出合适字数(长度)的整句句子。
- 中英文混合的字符串,由于编码方式原因,常规裁剪方法,无法【优雅】的中文按单个汉字,英文按单词进行统计长度和裁剪.
优雅的处理结果:
- 按规定的长度,进行整句字符串裁剪,默认会根据中文标点进行整句判断,尽量不断句、不裁剪英文单词。
- 带有分段(换行)的字符串,可以自行决定保留原分段,还是无视分段,重新合并裁剪。
- 整句判断标识(默认中文标点符号)、段落处理、采集长度等均可自定义。
Warning
⚠️ 请使用 utf-8编码。
⚠️ 本项目抽离于本人的其他生产项目,本着方便易用的原则,实际使用了各类字符串函数和方法达到分割效果,虽考虑了效率的处理,但仅建议使用在小文本的截剪处理上,理论上万字以内的效率和内存开销均在可控范围内。不建议直接处理万字以上的大段文本,请结合实际情况自行考量使用效率和内存开销。
⚠️ 仅能处理字符串,不能直接处理包含html标签的字符串,为保证结果,会直接清理掉 html标签!
Installing
$ composer require wangqs/cut_elegant_string
Usage
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
MIT