iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >字符串截取(汉字,字母,数字在浏览器所占像素不同,保证截取的字符串所占像素一致)
  • 529
分享到

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

开发语言后端php均值算法Poweredby金山文档 2023-09-14 19:09:51 529人浏览 泡泡鱼
摘要

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

描述:有一个需求:制作海报,文字需要根据底图宽度截取固定长度的字符串,并且居中,目前这篇文章所讲的截取部分,剧中部分:(底图宽度- 字符宽度)/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

--结束END--

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

本文链接: https://www.lsjlt.com/news/407661.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作