PHP处理客户端XML数据需优先读取php://input流并解析,其次兼容旧版$HTTP_RAW_POST_DATA,表单提交则用$_POST,须校验Content-Type为application/xml或text/xml,并推荐DOMDocument容错解析。

如果您在PHP中需要处理客户端发送的XML数据,PHP必须正确读取并解析原始HTTP请求体中的XML内容。以下是实现该功能的具体步骤:
一、使用file_get_contents读取原始输入流
PHP默认不会将XML内容自动解析为变量,需直接读取php://input流获取原始XML字符串,这是接收外部XML对象最基础且可靠的方式。
1、在PHP脚本开头调用file_get_contents函数读取php://input。
2、检查返回值是否为空,若为空则说明未收到XML数据。
立即学习“PHP免费学习笔记(深入)”;
3、将读取到的字符串赋值给变量,如$xmlString = file_get_contents('php://input');。
4、使用simplexml_load_string或DOMDocument::loadXML对$xmlString进行解析。
二、使用$HTTP_RAW_POST_DATA(已弃用但需兼容旧环境)
在PHP 5.6及更早版本且配置allow_url_fopen=On时,$HTTP_RAW_POST_DATA可能包含原始POST数据,但该变量自PHP 5.6起被废弃,仅可在register_globals=Off且enable_post_data_reading=On的极少数遗留环境中使用。
1、确认PHP版本低于5.6且php.ini中未设置always_populate_raw_post_data=-1。
2、直接访问全局变量$HTTP_RAW_POST_DATA。
3、判断其是否为非空字符串,再进行XML解析。
4、此方法在PHP 7.0+中完全不可用,必须改用php://input。
三、通过$_POST接收表单提交的XML文本字段
当XML内容被包裹在HTML表单的隐藏字段或文本域中提交时,可视为普通POST参数处理,无需解析原始流。
1、确保HTML表单中存在name为xml_data的或
标签: php html 编码 app curl html表单 xml解析 表单提交 php脚本
还木有评论哦,快来抢沙发吧~