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

如何在Python中解析Webform导出的PHP数组格式文件?

如何用Python解析Webform导出的PHP数组格式文本

嘿,这个场景我之前帮同事处理过,Webform导出的PHP数组文本确实有点折腾,不过有几个靠谱的方法可以搞定:

方法一:用专门的PHP序列化解析库(推荐)

PHP的数组格式和Python的字典/列表语法差异不小,用专门的phpserialize库是最稳妥的,能处理各种复杂嵌套和PHP特有的数据类型。

步骤如下:

  1. 先安装库:
pip install phpserialize
  1. 编写解析代码:
import phpserialize
import html

# 读取导出的txt文件
with open('你的表单导出文件.txt', 'r', encoding='utf-8') as f:
    raw_content = f.read()

# 第一步:把HTML实体转成正常字符(比如把 > 替换成 >)
clean_content = html.unescape(raw_content)

# 提取$webform变量对应的数组部分
start_pos = clean_content.find('array (') + len('array (')
end_pos = clean_content.rfind(')')
php_array_content = clean_content[start_pos:end_pos]

# 解析PHP数组为Python可操作的数据结构
webform_data = phpserialize.loads(php_array_content.encode('utf-8'), decode_strings=True)

# 现在就能直接操作数据了
print(webform_data['nid'])
print(webform_data['components'])

方法二:手动转换语法(适合简单数组)

如果不想安装第三方库,也可以手动把PHP数组语法转换成Python能识别的格式,再用ast.literal_eval解析(比eval安全很多)。不过这个方法只适合结构简单的数组,遇到PHP特有的类型或者复杂嵌套可能会出错。

示例代码:

import ast
import html

with open('你的表单导出文件.txt', 'r', encoding='utf-8') as f:
    raw_content = f.read()

# 转义HTML实体
clean_content = html.unescape(raw_content)

# 把PHP语法替换成Python语法
python_style_content = clean_content.replace('array (', '[')
python_style_content = python_style_content.replace('=>', ':')
python_style_content = python_style_content.rstrip(')')
# 提取$webform = 后面的核心内容
python_style_content = python_style_content.split('$webform = ')[1]

# 安全解析成Python数据结构
try:
    webform_data = ast.literal_eval(python_style_content)
    print(webform_data['next_serial'])
except SyntaxError as e:
    print(f"解析失败:{e},这种情况建议用方法一的专门库处理")

注意事项

  • 如果导出文件里有PHP注释或者特殊字符,可能需要先做额外清理(比如去掉//或/* */注释)
  • 优先推荐方法一,它能完美处理PHP数组的各种细节,比如数字键、嵌套数组、字符串转义等
  • 注意文件编码,大部分Webform导出文件是UTF-8,如果不是要调整open函数的encoding参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:22:33