php中的字符函数并简述功能,PHP 字符处理功能函数(收集中)

每天学习一点点,收录一点点,收集一些常用(通用)的功能函数,有助项目的快速开发,以下收录的功能函数也是我在项目中实践过的没有问题的。列一下收录过的目录

字符统计(包括中文、英文、数字和特殊符号)

长字符中加换行符

中文字符截取(不产生乱码)

隐藏字符串中间部分字符

// 字符统计(包括中文、英文、数字和特殊符号)

function strHandler($str)

{

$str_num = mb_strlen($str, $encode = 'UTF-8');

$cn = 0;

$en = 0;

$num = 0;

$other = 0;

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

// echo "\r\n" . mb_substr($str, $i, 1, $encode);

if (ord(mb_substr($str, $i, 1, $encode)) > 0xa0) {

$cn++;

}

if (preg_match("/^[a-zA-Z_\#]*$/", mb_substr($str, $i, 1, $encode))) {

$en += 1;

}

if (preg_match("/^\d*$/", mb_substr($str, $i, 1, $encode))) {

$num += 1;

}

if (preg_match("/[\'.,:;*?~\-`!@#$%^&+=)(<>{}]|\]|\[|\/|\\\|\"|\|/", mb_substr($str, $i, 1, $encode))) {

$other += 1;

}

}

echo "\r\n这个字符串的长度是:" . $str_num;

echo "\r\n有" . $cn . "个汉字 ";

echo "\r\n有" . $en . "个英文 ";

echo "\r\n有" . $num . "个数字 ";

}

// 长字符中加换行符

function strChangeLineHandler($str, $len)

{

$str_num = mb_strlen($str, $encode = 'UTF-8');

$start = 0;

$result = '';

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

$result .= mb_substr($str, $i, 1, $encode);

if ($len == $start) {

$start = 0;

$result .= "\n";

} else {

$start += 1;

}

}

return $result;

}

/**

* 中文字符截取(不产生乱码)

* 字符截取 要 UTF8 编码

* @param $string 被处理的字符串

* @param int $length 要截取的长度

* @param string $dot

* @return mixed|string

*/

function str_cut($string, $length = 100, $dot = '...') {

$strlen = strlen($string);

if ($strlen <= $length)

return $string;

$string = str_replace(array(' ', ' ', '&', '"', ''', '“', '”', '—', '', '·', '…'), array('∵', ' ', '&', '"', "'", '“', '”', '—', '', '·', '…'), $string);

$strcut = '';

$length = intval($length - strlen($dot) - $length / 3);

$n = $tn = $noc = 0;

while ($n < strlen($string)) {

$t = ord($string[$n]);

if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {

$tn = 1;

$n++;

$noc++;

} elseif (194 <= $t && $t <= 223) {

$tn = 2;

$n += 2;

$noc += 2;

} elseif (224 <= $t && $t <= 239) {

$tn = 3;

$n += 3;

$noc += 2;

} elseif (240 <= $t && $t <= 247) {

$tn = 4;

$n += 4;

$noc += 2;

} elseif (248 <= $t && $t <= 251) {

$tn = 5;

$n += 5;

$noc += 2;

} elseif ($t == 252 || $t == 253) {

$tn = 6;

$n += 6;

$noc += 2;

} else {

$n++;

}

if ($noc >= $length) {

break;

}

}

if ($noc > $length) {

$n -= $tn;

}

$strcut = substr($string, 0, $n);

$strcut = str_replace(array('∵', '&', '"', "'", '“', '”', '—', '', '·', '…'), array(' ', '&', '"', ''', '“', '”', '—', '', '·', '…'), $strcut);

return $strcut . $dot;

}

/**

* 隐藏字符串中间部分字符

* @param $str

* @param string $replacement

* @param int $start

* @param int $length

* @return string

*/

public static function SubstrHideReplace($str, $replacement = '*', $start = 1, $length = 3)

{

$len = mb_strlen($str,'utf-8');

if ($len > intval($start+$length)) {

$str1 = mb_substr($str,0,$start,'utf-8');

$str2 = mb_substr($str,intval($start+$length),NULL,'utf-8');

} else {

$str1 = mb_substr($str,0,1,'utf-8');

$str2 = mb_substr($str,$len-1,1,'utf-8');

$length = $len - 2;

}

$new_str = $str1;

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

$new_str .= $replacement;

}

$new_str .= $str2;

return $new_str;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值