<SOAP-ENV
元素及其各自的结束元素。
这是标题和正文开始部分。
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<SOAP-ENV:Header></SOAP-ENV:Header>
<SOAP-ENV:Body>
<VisionDataExchange>
现在我对$xml
包含整个xml数据的变量进行常规尝试:
$xml = preg_replace("/<\\/?SOAP(.|\\s)*?>/",'',$xml);
现在我的结果就是这个。它实际上剥离了openening标签,但没有关闭标签?我在这里缺少什么?
<?xml version="1.0" encoding="UTF-8"?>
</SOAP-ENV:Header>
<VisionDataExchange>
答案 0 :(得分:0)
我建议只匹配标记内的所有内容,而不是any character or whitespace
。看看this regex:
$re = "/<\\/?SOAP[^<>]+?>/";
$str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\">\n <SOAP-ENV:Header></SOAP-ENV:Header>\n <SOAP-ENV:Body>\n <VisionDataExchange>";
$subst = "";
$result = preg_replace($re, $subst, $str);
答案 1 :(得分:0)
好的,所以在我的桌子上几乎打破了我的头骨之后,我发现了问题所在。正则表达式确实工作得很好!字符串中有一个隐藏的\
导致正则表达式失败。