wangqs/cut_elegant_string

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

v1.0.2 2022-05-20 17:20 UTC

This package is auto-updated.

Last update: 2024-04-20 21:16:00 UTC


README

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

主要解决2痛点:

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

优雅的处理结果:

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

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