我使用 cURL 向服务器发送请求这是链接:Server Side script for cURL request 我用 file_get_contents('php://input'); 读取发送的数据 但是我的 xml 周围有一些讨厌的数据。所以我想使用 preg_match 只选择 xml。 像这样:
$arq = file_get_contents('php://input');
$wanted="/\<request\>(.*?)\<\/request\>/i";
preg_match($wanted, $arq, $result);
echo $result;
这是 $arq 的内容:
------------------------------9e2a86ef9445
Content-Disposition: form-data; name="data"
<request>
<session>
<user>exampleuser</user>
<pass>examplepass</pass>
</session>
</request>
------------------------------9e2a86ef9445--
我怎样才能阅读之间的所有内容 因为其中的内容不是静态的,而是动态的,并且在不同的请求中可能会有所不同。
非常感谢。
最佳答案
您可以使用这个最初由 Gumbo
编写的正则表达式由我修改以满足您的需求。
<?php
$html='------------------------------9e2a86ef9445
Content-Disposition: form-data; name="data"
<request>
<session>
<user>exampleuser</user>
<pass>examplepass</pass>
</session>
</request>
------------------------------9e2a86ef9445--';
$tagname = 'request';
$pattern = '/<'.preg_quote($tagname, '/').'(?:[^"\'>]*|"[^"]*"|\'[^\']*\')*>(.*?)<\/'.preg_quote($tagname, '/').'>/s';
preg_match_all($pattern, $html, $matches);
echo $thefilteredXML = $matches[0][0];
OUTPUT(就像在浏览器的 View 源中一样):
<request>
<session>
<user>exampleuser</user>
<pass>examplepass</pass>
</session>
</request>
关于php - preg_match html代码 <request></request>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21098010/