You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MediaWiki API添加项目符号列表时无法换行的问题求助

解决方案

问题核心原因

MediaWiki的无序列表语法要求每个以*开头的列表项必须单独占据一行,解析器才会识别为独立的列表条目。之前的尝试失效主要是两个问题:

  1. <br/>是HTML换行标签,仅会在列表项内部生效,不会被MediaWiki识别为wikitext层面的列表项分隔符
  2. 加\n/\r\n后仍失效,基本是因为数组拼接为$content变量时换行丢失,或者传递过程中被意外转义

修正步骤

1. 调整列表生成逻辑

不要在单个列表项末尾硬加换行,统一在数组拼接时处理:

// 生成每个列表项
$maps[] = "* " . $mapName;

// 所有项生成完成后,用换行符拼接为完整列表
$mapList = implode("\n", $maps);

// 拼入页面整体内容时,注意列表和其他内容之间留空行(避免和其他文本粘连导致识别异常)
$content = "页面开头内容\n\n" . $mapList . "\n\n页面后续内容";

如果需要兼容跨系统换行,也可以把\n替换为PHP内置常量PHP_EOL。

2. 验证内容格式

你现有的curl代码本身没有问题,不需要调整,只要确保传递给params4里的text参数的$content变量原始输出中,每个列表项都是单独一行即可。可以在拼接完$content后加一行临时调试代码验证:

// 调试输出,确认每个*项是否单独占行
file_put_contents("debug_wiki.txt", $content);

如果打开调试文件后列表格式是正确的,调用API提交后就能正常渲染为换行的项目符号列表。

异常排查

如果调整后仍有问题,检查是否有代码对$content做过去除换行的过滤操作,比如preg_replace或者str_replace删掉了\n字符,这类操作会直接破坏wikitext的列表格式。


内容的提问来源于stack exchange,提问作者Ceri Turner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:36:03