php 字符串分析函数
php 字符串分析函数function analyzeString($str) { if (empty($str)) { echo "(空字符串)\n"; return; } echo "长度: " . strlen($str) . " 字
php 字符串分析函数
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 " ";
} 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";
}信息来源:内容由AI生成
本文为转载文章,版权归原作者所有,不代表本站立场和观点。
上一篇:PHP 404 错误
下一篇:返回列表
2025-12-07
0
0


