使用MediaWiki API添加项目符号列表时无法换行的问题求助
解决方案
问题核心原因
MediaWiki的无序列表语法要求每个以*开头的列表项必须单独占据一行,解析器才会识别为独立的列表条目。之前的尝试失效主要是两个问题:
<br/>是HTML换行标签,仅会在列表项内部生效,不会被MediaWiki识别为wikitext层面的列表项分隔符- 加
\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
相关产品推荐
相关产品推荐

