PHP处理Looka颜色方案提取方法【教程】
Looka导出JSON颜色字段名不固定,需先用array_keys()确认键名并isset()检查;十六进制颜色需ltrim去#、ctype_xdigit验证;RGB需sscanf转HEX;解码前须校验BOM和编码,检查json_last_error();深色模式需手动调暗RGB并处理极值。Looka导出的JSON里颜色字段名不固定,primary和secondary可能不存在Looka生成的品牌包JSON结构松散,实际字段名取决于设计时选的配色方案类型。常见但非必然的键是primaryColor、accentColor、neutralColor,甚至出现color_1这种编号命名。硬写$data['primary']会直接触发Undefined index警告。实操建议:立即学习“PHP免费学习笔记(深入)”;先用array_keys($data)打印顶层键,确认真实字段名,别猜用isset()逐个检查候选键,优先级按业务需要定(比如先找primaryColor,再 fallback 到color_1)别依赖json_decode($json, true)后的数组深度——有些颜色嵌在logo或styleGuide子结构里十六进制颜色值带#前缀,PHP字符串处理时容易漏掉校验Looka输出的primaryColor值形如"#2a5dc2",但部分旧版导出或API响应可能返回无#的"2a5dc2",甚至混入RGB格式"rgb(42, 93, 194)"。直接传给CSS或数据库会出错。实操建议:立即学习“PHP免费学习笔记(深入)”;用ltrim($color, '#')统一去前缀,再用strlen() === 6 && ctype_xdigit()验证是否为合法六位HEX遇到rgb(...),用sscanf()提取数值后转HEX:sscanf($rgb, 'rgb(%d,%d,%d)', $r, $g, $b),再sprintf('#%02x%02x%02x', $r, $g, $b)别用filter_var($color, FILTER_SANITIZE_STRING)——它不会修复格式,只会删掉#和括号json_decode()失败时没有明确错误提示,调试卡在空白页Looka JSON偶尔含BOM头、UTF-8编码损坏、或末尾多逗号,json_decode()返回null但json_last_error()不报错,导致后续逻辑静默失败。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能
