php 字符串函数总结

字符串函数

根据用户id生成唯一的分享码


    /**
     * 根据用户id生成唯一的分享码 
     * @param $user_id
     * @return string
     * eq:
     * A000001
     */
    private function getRecommendCode($user_id)
    {
        $chr = chr(($user_id % 26) + 65);
        return $chr . str_pad($user_id, 6, '0', STR_PAD_LEFT);
    }
    

获取汉字首字母大写

/**
 * 获取汉字大写字母 此方法并不完美
 * @param $str
 * @return string
 */
function getObtainInitials($str)
{
    if (empty($str)) {
        return '';
    }
    $fchar = ord($str{0});
    if ($fchar >= ord('A') && $fchar <= ord('z'))
        return strtoupper($str{0});
    $s1 = iconv('UTF-8', 'gb2312', $str);
    $s2 = iconv('gb2312', 'UTF-8', $s1);
    $s = $s2 == $str ? $s1 : $str;
    $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
    if ($asc >= -20319 && $asc <= -20284) {
        return 'A';
    }
    if ($asc >= -20283 && $asc <= -19776) {
        return 'B';
    }
    if ($asc >= -19775 && $asc <= -19219) {
        return 'C';
    }
    if ($asc >= -19218 && $asc <= -18711) {
        return 'D';
    }
    if ($asc >= -18710 && $asc <= -18527) {
        return 'E';
    }
    if ($asc >= -18526 && $asc <= -18240) {
        return 'F';
    }
    if ($asc >= -18239 && $asc <= -17923) {
        return 'G';
    }
    if ($asc >= -17922 && $asc <= -17418) {
        return 'H';
    }
    if ($asc >= -17417 && $asc <= -16475) {
        return 'J';
    }
    if ($asc >= -16474 && $asc <= -16213) {
        return 'K';
    }
    if ($asc >= -16212 && $asc <= -15641) {
        return 'L';
    }
    if ($asc >= -15640 && $asc <= -15166) {
        return 'M';
    }
    if ($asc >= -15165 && $asc <= -14923) {
        return 'N';
    }
    if ($asc >= -14922 && $asc <= -14915) {
        return 'O';
    }
    if ($asc >= -14914 && $asc <= -14631) {
        return 'P';
    }
    if ($asc >= -14630 && $asc <= -14150) {
        return 'Q';
    }
    if ($asc >= -14149 && $asc <= -14091) {
        return 'R';
    }
    if ($asc >= -14090 && $asc <= -13319) {
        return 'S';
    }
    if ($asc >= -13318 && $asc <= -12839) {
        return 'T';
    }
    if ($asc >= -12838 && $asc <= -12557) {
        return 'W';
    }
    if ($asc >= -12556 && $asc <= -11848) {
        return 'X';
    }
    if ($asc >= -11847 && $asc <= -11056) {
        return 'Y';
    }
    if ($asc >= -11055 && $asc <= -10247) {
        return 'Z';
    }
    return '#';
}


中文截取无乱码

方法1:mb_substr();
方法2:以下代码就是
/**
 * 中文截取无乱码
 * @param string $str
 * @param int $start
 * @param int $length
 * @return string
 * eq:
 * $str = "中国人都爱php";
 * echo substr_utf8($str, 5, 2);
 */
function substr_utf8($str, $start, $length = null)
{
    return join("", array_slice(preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $start, $length));
}

/**
 * 计算字符串的长度
 * @param $str
 * @return int
 */
function strlen_utf8($str)
{
    return count(preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY));
}

清除多余的空格

/**
 * 清除多余的空格
 * @param $str
 * @return mixed
 */
function trimall($str)
{
    $qian = array(" ", " ", "\t", "\n", "\r");
    $hou = array("", "", "", "", "");
    return str_replace($qian, $hou, $str);
}

分解数字

/**
 * 分解数字
 * @param $num
 * @return array|If
 */
function explainnum($num)
{
    return str_split(sprintf('%05s', $num));
}

反转字符串

strrev($string);  //反转字符串
function str_reverse($str)
{
    $len = strlen($str);
    $newstr = '';
    for ($i = $len; $i >= 0; $i--) {
        $newstr .= $str[$i];
    }
    return $newstr;
}

echo str_reverse('abcdefg');

posted on 2023-08-08 09:32  何苦->  阅读(7)  评论(0编辑  收藏  举报

导航