midjourney视频提示词搜索需严格清洗:先剥离--v、::、@等非法控制符,再统一空格、转小写、ascii归一化,禁用--no等负向词,通过白名单映射或前缀约束增强语义,最后用rawurlencode()编码并截断至200字符。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Midjourney视频提示词搜索词需防止被恶意构造、注入或反向工程,尤其在多人协作后台或开放接口场景下,用户输入的搜索关键词可能携带干扰参数、越权指令或诱导性语义,直接拼入Explore搜索或代理请求将导致结果污染、权限绕过甚至服务异常。
剥离非法控制符与参数残留
用 preg_replace('/--\w+|::\d+(\.\d+)?|@[\w]+/', '', $search_term) 清除所有 Midjourney 原生指令符号,包括 --v 6.1、::2.0、@my_prompt 等——这些在 Explore 搜索中无意义,反而可能被前端误解析为 URL 参数或触发代理层异常路由。
对英文搜索词执行 trim() + preg_replace('/\s+/', ' ', $str),把 multiple spaces 和 leading/trailing 空格统一为单空格,避免 “cyberpunk city” 被 MJ 后端拆成 cyberpunk / city 两个独立 token 导致语义断裂。
【必须禁用用户自由输入 --no 或负向词】 搜索词中若含 --no person、--no text 等,会误导 Explore 接口返回大量空白/无效图,且无法通过前端过滤还原;应在清洗阶段硬性截断。
强制小写 + ASCII 归一化
调用 mb_strtolower($search_term, 'UTF-8') 统一转为小写,消除大小写歧义(如 “Chinese Palace” 和 “chinese palace” 在 Explore 中实际命中不同结果池)。
使用 iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $search_term) 替换所有非 ASCII 字符:ü→u,ñ→n,é→e;否则 “café lights” 可能因编码不一致被 Explore 返回 0 结果或乱码图集。
这一步操作起来很简单,直接套函数就行,但漏掉会导致部分带重音词完全搜不到匹配项。
建立白名单关键词映射表
方法一:预设安全词典映射
维护一个关联数组,将高风险泛义词替换为平台验证过的稳定词条,例如:
“futuristic car” → “sleek silver electric sedan”
“beautiful woman” → “east asian model in linen dress, soft natural light”
“old building” → “19th century brick warehouse, overgrown ivy, overcast sky”
方法二:启用前缀强制约束
所有搜索词自动前置限定域标识,如 “video:cyberpunk street rain” → 实际发送至 Explore 的是 “cyberpunk street rain, motion blur, slow motion, cinematic framing”,补全视频必需的动作语义锚点,避免纯静态词返回静帧图。
注意:白名单替换必须在剥离控制符之后执行,否则 “--no person” 被映射后仍残留 --no,将破坏后续清洗逻辑。
URL 安全编码与长度截断
第一步:用 rawurlencode() 对清洗后的搜索词编码,不可用 urlencode() —— 后者把空格转 +,而 Explore 接口只认 %20,+ 会被识别为字面加号,造成 “cyberpunk+street” 匹配失败。
第二步:校验编码后字符串总长,超过 200 字符则截断并追加 “…” 标记,防止超长搜索触发代理网关 414 错误或拖慢响应。
第三步:拼接最终请求 URL:https://www.midjourney.com/app/explore/?q= . $encoded_term











