| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | <?phpnamespace App\Constants;// 玩法枚举class GameplayRuleEnum {    const SINGLE = '单';    const DOUBLE = '双';    const BIG = '大';    const SMALL = '小';    const EXTREME_BIG = '极大';    const EXTREME_SMALL = '极小';    const BAO_ZI = '豹子';    const PAIRS = '对子';    const STRAIGHT = '顺子';    const ONE = '一段';    const TWO = '二段';    const THREE = '三段';    const FOUR = '四段';    // 包含本身体    const SUM_BIG = 14;   // 总和算大    const SUM_SMALL = 13; // 总和算小    const SUM_EXTREME_BIG = 22;   // 总和极大    const SUM_EXTREME_SMALL = 6; // 总和极小    const ONE_BIG = 5; // 尾数算大    const ONE_SMALL = 4; // 尾数算小    const SECTION_1 = [6,10];    // 一段范围    const SECTION_2 = [11,13];   // 二段范围    const SECTION_3 = [14,16];  // 三段范围    const SECTION_4 = [17,21];  // 四段范围    public static $RULES = [        '总和' => [            '单',            '双',            '大',            '小',            '大单',            '大双',            '小单',            '小双',            '极大',            '极小',            '0操',            '1操',            '2操',            '3操',            '4操',            '5操',            '6操',            '7操',            '8操',            '9操',            '10操',            '11操',            '12操',            '13操',            '14操',            '15操',            '16操',            '17操',            '18操',            '19操',            '20操',            '21操',            '22操',            '23操',            '24操',            '25操',            '26操',            '27操',            '顺子',            '对子',            '豹子',        ],        '尾数' => [            '0尾',            '1尾',            '2尾',            '3尾',            '4尾',            '5尾',            '6尾',            '7尾',            '8尾',            '9尾',            '尾大',            '尾小',            '尾单',            '尾双',            '尾大单',            '尾大双',            '尾小单',            '尾小双',        ],        '个位球' => [            'A大',            'A小',            'A单',            'A双',            'B大',            'B小',            'B单',            'B双',            'C大',            'C小',            'C单',            'C双',            '0A',            '1A',            '2A',            '3A',            '4A',            '5A',            '6A',            '7A',            '8A',            '9A',            '0B',            '1B',            '2B',            '3B',            '4B',            '5B',            '6B',            '7B',            '8B',            '9B',            '0C',            '1C',            '2C',            '3C',            '4C',            '5C',            '6C',            '7C',            '8C',            '9C',        ],        '多段' => [            '一段',            '二段',            '三段',            '四段',        ]    ];    /**     * 验证并解析用户输入     * @param string $input 例如 "大单100" / "5操20"     * @return array|null   返回 ['rule' => 玩法, 'amount' => 金额],失败返回 null     */    public static function validateInput(string $input): ?array    {        // 获取所有玩法        $allRules = array_merge(...array_values(self::$RULES));                // 玩法正则(防止玩法里有特殊符号出错)        $rulesPattern = implode('|', array_map('preg_quote', $allRules));        // 匹配玩法 + 金额        if (preg_match('/^(' . $rulesPattern . ')(\d+)$/u', $input, $matches)) {            return [                'rule'   => $matches[1],                'amount' => (int)$matches[2]            ];        }        return null;    }}
 |