php高手字符串截取问题 描述:要做个短信发送模块 短信设备只能发送汉字70个英文数字140个
发布网友
发布时间:2022-05-09 22:37
我来回答
共4个回答
热心网友
时间:2023-10-25 21:20
如果你确定编码是GB2312,那我想我的代码可以帮你。如果不是,比如是UTF8的话,那下面的代码还得小改一改。
<?php
$msg = "又是一个美好的开始,愿我虔诚的祝福,带给你成功的一年,祝你生日快乐! 在你生日来临之即,祝事业正当午,身体壮如虎,金钱不胜数,干活不辛苦,悠闲像老鼠,浪漫似乐谱,快乐莫你属。特送你一杯我精心特调的果汁,里面包含100cc的心想事成,200cc的天天开心,300cc的活力十足,祝生日快乐 有句话一直没敢对你说,可是你生日的时候再不说就没机会了:你真地好讨厌……………讨人喜欢,百看不厌。";
//下面正式开始切分,切分好的短信存放在临时数组$tmpstr里面
$tmpMsg = $msg;
$i = $j = $k = 0;
$msgArr = Array('');
while(strlen($tmpMsg) > 0) {
if(ord(substr($tmpMsg, 0, 1)) > 0xa0) {
$k = 2;
} else {
$k = 1;
}
$i += $k;
if($i <= 140) {
$msgArr[$j] .= substr($tmpMsg, 0, $k);
$tmpMsg = substr($tmpMsg, $k);
} else {
$i = 0;
$j++;
$msgArr[$j]='';
}
}
//你需要的做的就是处理切分好的短信数组
foreach($msgArr as $msgSingle){
echo $msgSingle."<br/>";
}
?>
热心网友
时间:2023-10-25 21:21
先检查有无中文, 如果没有中文(也没有全角字符),那么按照英文切分就可以,没有技术含量。
有中文,整个信息就需要转成unicode ,那么*为70个字 英文+汉字
这时候只要将字符串转成unicode ,因为每个unicode都是一样大小(俩个字符)然后每数出70个‘字’就数出一条信息就可以了。追问能麻烦写下吗?感谢!可以加分
追答不了解情况啊,抱歉只能给你个思路而已。
热心网友
时间:2023-10-25 21:21
似乎通信商自动回给你分成2条吧?
比如你发送了100个子,通信商会分2条发送到手机用户上
热心网友
时间:2023-10-25 21:22
路过,