0) { $b64 .= str_repeat('=', 4 - $mod); } $json_str = base64_decode($b64, true); if ($json_str === false) { return [false, null]; } $data = json_decode($json_str, true); if (!is_array($data)) { return [false, null]; } return [true, $data]; } // 辅助函数:将配置重新编码为 vmess 行 function build_vmess_line(array $data): string { $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $b64 = base64_encode($json); return 'vmess://' . $b64; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $target_ip = trim($_POST['target_ip'] ?? ''); $original_content = trim($_POST['content'] ?? ''); $replace_from = trim($_POST['replace_from'] ?? ''); $replace_to = trim($_POST['replace_to'] ?? ''); if ($original_content !== '') { $lines = preg_split("/\r\n|\n|\r/", $original_content); $result_lines = []; foreach ($lines as $line) { $raw_line = rtrim($line, "\r\n"); if (trim($raw_line) === '') { $result_lines[] = $raw_line; continue; } [$ok, $data] = parse_vmess_line($raw_line); if (!$ok) { // 不是合法的 vmess 链接,原样返回 $result_lines[] = $raw_line; continue; } // 1. 替换 IP:修改 JSON 中的 add 字段 if ($target_ip !== '') { $data['add'] = $target_ip; } // 2. 批量字符串替换:在所有字符串字段中做 str_replace if ($replace_from !== '' && $replace_to !== '') { array_walk_recursive($data, function (&$value) use ($replace_from, $replace_to) { if (is_string($value) && $value !== '') { $value = str_replace($replace_from, $replace_to, $value); } }); } $result_lines[] = build_vmess_line($data); } $result_content = implode(PHP_EOL, $result_lines); } } else { // 默认演示文本:一条 vmess 链接示例 $original_content = "vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogIkFsaVBDLUdHWS1TaGFyZS1CZXN0dm0tU0ciLA0KICAiYWRkIjogIjEuMS4xLjEiLA0KICAicG9ydCI6ICIzMzg4OCIsDQogICJpZCI6ICI3N2MwYWFmZC03MTNhLTQwZDUtYmI2MS1mZWMyN2JiMTI0MTEiLA0KICAiYWlkIjogIjAiLA0KICAic2N5IjogImF1dG8iLA0KICAibmV0IjogInRjcCIsDQogICJ0eXBlIjogIm5vbmUiLA0KICAiaG9zdCI6ICIiLA0KICAicGF0aCI6ICIiLA0KICAidGxzIjogIiIsDQogICJzbmkiOiAiIiwNCiAgImFscG4iOiAiIiwNCiAgImZwIjogIiIsDQogICJpbnNlY3VyZSI6ICIwIg0KfQ=="; $result_content = $original_content; // 默认结果显示原样 } ?> vmess 批量替换工具

vmess 批量替换工具

原始 vmess 地址(每行一条) Input
替换后的 vmess 地址 Output