php对中英文字符串进行截取,利用php怎么对中英文混合的字符串进行截取
利用php怎么對(duì)中英文混合的字符串進(jìn)行截取
發(fā)布時(shí)間:2021-01-04 15:31:24
來(lái)源:億速云
閱讀:103
作者:Leah
利用php怎么對(duì)中英文混合的字符串進(jìn)行截取?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
php 截取中應(yīng)為字符串,就不必再用substr或者mb_substr//截取想這樣的字符串
a李三
利用ASCII/**
*
*?中英混合的字符串截取
*?@param?unknown_type?$sourcestr
*?@param?unknown_type?$cutlength
*/
function?assoc_substr($sourcestr,?$cutlength)?{
$returnstr?=?'';
$i?=?0;
$n?=?0;
$str_length?=?strlen?(?$sourcestr?);?//字符串的字節(jié)數(shù)
while?(?($n?
$temp_str?=?substr?(?$sourcestr,?$i,?1?);
$ascnum?=?Ord?(?$temp_str?);?//得到字符串中第$i位字符的ascii碼
if?($ascnum?>=?224)?{//如果ASCII位高與224,
$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?3?);?//根據(jù)UTF-8編碼規(guī)范,將3個(gè)連續(xù)的字符計(jì)為單個(gè)字符
$i?=?$i?+?3;?//實(shí)際Byte計(jì)為3
$n?++;?//字串長(zhǎng)度計(jì)1
}?elseif?($ascnum?>=?192){?//如果ASCII位高與192,
$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?2?);?//根據(jù)UTF-8編碼規(guī)范,將2個(gè)連續(xù)的字符計(jì)為單個(gè)字符
$i?=?$i?+?2;?//實(shí)際Byte計(jì)為2
$n?++;?//字串長(zhǎng)度計(jì)1
}?elseif?($ascnum?>=?65?&&?$ascnum?<=?90)?{//如果是大寫(xiě)字母,
$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?1?);
$i?=?$i?+?1;?//實(shí)際的Byte數(shù)仍計(jì)1個(gè)
$n?++;?//但考慮整體美觀,大寫(xiě)字母計(jì)成一個(gè)高位字符
}elseif?($ascnum?>=?97?&&?$ascnum?<=?122)?{
$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?1?);
$i?=?$i?+?1;?//實(shí)際的Byte數(shù)仍計(jì)1個(gè)
$n?++;?//但考慮整體美觀,大寫(xiě)字母計(jì)成一個(gè)高位字符
}?else?{//其他情況下,半角標(biāo)點(diǎn)符號(hào),
$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?1?);
$i?=?$i?+?1;
$n?=?$n?+?0.5;
}
}
return?$returnstr;
}
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
總結(jié)
以上是生活随笔為你收集整理的php对中英文字符串进行截取,利用php怎么对中英文混合的字符串进行截取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux串口缓冲区的大小,linux-
- 下一篇: xd股票一般是涨还是跌 除夕当天股价会下