題目解析傳送門:https://blog.csdn.net/LITTENg/article/deta...
public function test()
{
// 字條Note
$n1 = '3485djDkxh4hhGE';
$n2 = '2984akDfkkkkggEdsb';
$n3 = 's&hgsfdk';
$n4 = 'd&Hyscvnm';
// 轉換成:日期縮寫
$week = ['A'=>'MON', 'B'=>'TUE', 'C'=>'WED', 'D'=>'THU', 'E'=>'FRI', 'F'=>'SAT', 'G'=>'SUN'];
$flag = 0; // 0日期 、 1小時
$n1_len = strlen($n1); // 字條n1的字串長度
$n3_len = strlen($n3); // 字條n3的字串長度
// 迴圈比較n1 n2
for ($i=0; $i < $n1_len ; $i++) {
if ($flag == 0) {
// 星期 && 同位置的字元相等 && 為字母 && 字元範圍是 A - G
if ($n1[$i] === $n2[$i] && $n1[$i] >= 'A' && $n1[$i] <= 'G') {
$res[] = $week[$n1[$i]];
$flag = 1;
continue;
}
} else {
// 小時 && 同位置的字元相等 && 字元範圍是 0 - 9 、A - N
if ($n1[$i] === $n2[$i] && preg_match('/[0-9A-N]/', $n1[$i])) {
// ord($n1[$i]) - 65 + 9 + 1
$res[] = ctype_alpha($n1[$i]) ? ord($n1[$i]) - 55 : '0' . $n1[$i];
break;
}
}
}
// 迴圈比較n3 n4
for ($i=0; $i < $n3_len; $i++) {
// 分鐘 && 同位置的字元相等 && 為字母
if ($n3[$i] === $n4[$i] && preg_match('/[a-zA-Z]/', $n3[$i])) {
if (isset($res)) {
// 字元位置就是分鐘:記錄相等字元的位置,從0開始
$res[] = $i > 9 ? : '0' . $i;
break;
}
}
}
echo $res[0] . ' ' . $res[1] . ':' . $res[2];
}
筆記:
PHP字元型別檢測的內建擴充套件:ctype
ctype_alnum — 做字母和數字字元檢測
ctype_alpha — 做純字元檢測
ctype_digit — 做純數字檢測
ctype_lower — 做小寫字元檢測
ctype_upper — 做大寫字母檢測
ctype_space — 做空白字元檢測
//測試是否是純數字
preg_match('/\d/', $char)
//測試是否是純字元
preg_match('/[a-zA-Z]/', $char)
本作品採用《CC 協議》,轉載必須註明作者和本文連結