编程语言您现在的位置是:首页 > 博客日志 > 编程语言

php 字符串分析函数

<a href='mailto:'>微wx笑</a>的头像微wx笑 2025-12-07编程语言 0 0关键字:   

php 字符串分析函数function analyzeString($str) { if (empty($str)) { echo "(空字符串)\n"; return; } echo "长度: " . strlen($str) . " 字

无知人生,ivu4e.com,ivu4e.cn

php 字符串分析函数7TC无知

function analyzeString($str) {
    if (empty($str)) {
        echo "(空字符串)\n";
        return;
    }
    
    echo "长度: " . strlen($str) . " 字符\n";
    echo "内容(十六进制):\n";
    
    for ($i = 0; $i < strlen($str); $i++) {
        $char = $str[$i];
        $ord = ord($char);
        $hex = bin2hex($char);
        
        echo sprintf("  [%02d] 0x%s = ", $i, $hex);
        
        // 判断字符类型
        if ($ord < 32 || $ord == 127) {
            // 控制字符
            $controlNames = [
                0 => "NUL", 1 => "SOH", 2 => "STX", 3 => "ETX", 4 => "EOT",
                5 => "ENQ", 6 => "ACK", 7 => "BEL", 8 => "BS", 9 => "TAB",
                10 => "LF", 11 => "VT", 12 => "FF", 13 => "CR", 14 => "SO",
                15 => "SI", 16 => "DLE", 17 => "DC1", 18 => "DC2", 19 => "DC3",
                20 => "DC4", 21 => "NAK", 22 => "SYN", 23 => "ETB", 24 => "CAN",
                25 => "EM", 26 => "SUB", 27 => "ESC", 28 => "FS", 29 => "GS",
                30 => "RS", 31 => "US", 127 => "DEL",
            ];
            echo isset($controlNames[$ord]) ? $controlNames[$ord] : "CTRL($ord)";
        } elseif ($ord == 32) {
            echo "SPACE";
        } elseif ($ord == 160) {
            echo "&nbsp;";
        } elseif ($ord >= 194 && $ord <= 223) {
            // UTF-8多字节字符的开始
            if ($i + 1 < strlen($str)) {
                $next = ord($str[$i + 1]);
                $fullHex = bin2hex(substr($str, $i, 2));
                
                $unicodeMap = [
                    'c2a0' => 'NBSP',
                    'c2a9' => '©',
                    'c2ae' => '®',
                    'e28080' => 'EN QUAD',
                    'e28081' => 'EM QUAD',
                    'e28082' => 'EN SPACE',
                    'e28083' => 'EM SPACE',
                    'e28084' => '3-PER-EM SPACE',
                    'e28085' => '4-PER-EM SPACE',
                    'e28086' => '6-PER-EM SPACE',
                    'e28087' => 'FIGURE SPACE',
                    'e28088' => 'PUNCTUATION SPACE',
                    'e28089' => 'THIN SPACE',
                    'e2808a' => 'HAIR SPACE',
                    'e2808b' => 'ZERO WIDTH SPACE',
                    'e2808c' => 'ZERO WIDTH NON-JOINER',
                    'e2808d' => 'ZERO WIDTH JOINER',
                    'e2808e' => 'LEFT-TO-RIGHT MARK',
                    'e2808f' => 'RIGHT-TO-LEFT MARK',
                ];
                
                if (isset($unicodeMap[$fullHex])) {
                    echo $unicodeMap[$fullHex];
                    $i++; // 跳过下一个字节
                } else {
                    echo "UTF-8($hex)";
                }
            } else {
                echo "UTF-8($hex)";
            }
        } else {
            echo "'$char'";
        }
        
        echo "\n";
    }
    
    // 统计字符类型
    $whiteCount = 0;
    $nonWhiteCount = 0;
    $otherCount = 0;
    
    for ($i = 0; $i < strlen($str); $i++) {
        $char = $str[$i];
        if (preg_match('/\s/', $char)) {
            $whiteCount++;
        } elseif (preg_match('/\S/', $char)) {
            $nonWhiteCount++;
        } else {
            $otherCount++;
        }
    }
    
    echo "\n统计:\n";
    echo "  空白字符: $whiteCount\n";
    echo "  非空白字符: $nonWhiteCount\n";
    echo "  其他字符: $otherCount\n";
    
    // 尝试用不同模式匹配
    echo "\n模式匹配测试:\n";
    echo "  /\\s+/ 匹配: " . (preg_match('/\s+/', $str) ? "是" : "否") . "\n";
    echo "  /\\S+/ 匹配: " . (preg_match('/\S+/', $str) ? "是" : "否") . "\n";
    echo "  /[\\s\\S]+/ 匹配: " . (preg_match('/[\s\S]+/', $str) ? "是" : "否") . "\n";
}


7TC无知


7TC无知

无知人生,ivu4e.com,ivu4e.cn

信息来源:内容由AI生成
本文为转载文章,版权归原作者所有,不代表本站立场和观点。

很赞哦! () 有话说 ()

上一篇:PHP 404 错误

下一篇:返回列表

相关文章