文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

字符串截取(汉字,字母,数字在浏览器所占像素不同,保证截取的字符串所占像素一致)

2023-09-14 19:50

关注

描述:有一个需求:制作海报,文字需要根据底图宽度截取固定长度的字符串,并且居中,目前这篇文章所讲的截取部分,剧中部分:(底图宽度- 字符宽度)/2 取整就可以了,可以参考我的相关文章

  1. PHP GD库生成缩略图并保存在指定文件夹

  1. PHP GD库生成海报(近期推出

效果图:

//拆分字符串

public function split(){

$str = '测试测试test12TEST数据12test';

//标准长度

$withmark =200;

//分段,转换成数组,然后变成凑满数据

$strlen = strlen($str);

$strmark = array();

for ($i=0;$i<$strlen;$i++){

if(mb_substr($str,$i,1)){

$strmark[$i] = mb_substr($str,$i,1);

}

}

//设置为空

$strlenmar = 0;

$strlenarray = array();

foreach ($strmark as $key=>$value){

$strlenmar += $this->count_leng($value);

if($strlenmar >= $withmark){

$strlenarray[]=$key;

$strlenmar = 0;

}

}

//总个数(段数)

$allnum = intval(ceil(($this->count_leng($str))/$withmark));

//组装数据

$strlastarray = array();

foreach ($strlenarray as $key=>$value){

$length = $strlenarray[0];

//兼容截取

if(!$strlenarray[$key-1]){

$strlastarray[] = mb_substr($str,0,$length);

}else{

$strlastarray[] = mb_substr($str,$strlenarray[$key-1],$length);

}

}

//兼容截取

if(count($strlastarray) < $allnum){

$strlastarraymore = mb_substr($str,$strlenarray[count($strlastarray)-1],$strlenarray[0]);

}

//获取最终数组

if($strlastarraymore){

$last = array_merge($strlastarray,array($strlastarraymore));

}else{

$last = $strlastarray;

}

var_dump($last);die;

}

public function count_leng($str){

//文字宽度

$spacingsix = 26;

//数据获取(兼容)

preg_match_all("/[0-9]{1}/",$str,$arrNum);//数字个数

preg_match_all("/[a-zA-Z]{1}/",$str,$arrAl);//字母个数

preg_match_all("/([\x{4e00}-\x{9fa5}]){1}/u",$str,$arrCh);//中文个数

$other = mb_strlen($str)-count($arrNum[0])-count($arrAl[0])-count($arrCh[0]);

$distance = count($arrNum[0])*($spacingsix*0.5) + count($arrAl[0])* ($spacingsix* 0.7) +$other*($spacingsix* 0.42) + count($arrCh[0])*$spacingsix;

return $distance;

}

来源地址:https://blog.csdn.net/masterphp/article/details/128672959

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯