Php 预匹配html代码<;请求></请求>;

Php 预匹配html代码<;请求></请求>;,php,curl,preg-match,Php,Curl,Preg Match,我使用cURL向服务器发送请求这是一个链接: 我读取带有文件内容的发送数据php://input'); 但是我的xml中有一些令人讨厌的数据。所以我认为使用preg_match只选择xml。 大概是这样的: $arq = file_get_contents('php://input'); $wanted="/\<request\>(.*?)\<\/request\>/i"; preg_match($wanted, $arq, $result); echo $result;

我使用cURL向服务器发送请求这是一个链接: 我读取带有文件内容的发送数据php://input'); 但是我的xml中有一些令人讨厌的数据。所以我认为使用preg_match只选择xml。 大概是这样的:

$arq = file_get_contents('php://input');
$wanted="/\<request\>(.*?)\<\/request\>/i";
preg_match($wanted, $arq, $result);
echo $result;
$arq=file\u get\u contents('php://input');
$WARNED=“/\(.*?\/i”;
预赛($通缉,$arq,$result);
回声$结果;
这是$arq的内容:

------------------------------9e2a86ef9445
Content-Disposition: form-data; name="data"

<request>
<session>
 <user>exampleuser</user>
 <pass>examplepass</pass>
</session>
</request>
------------------------------9e2a86ef9445--
------------------------------------9e2a86ef9445
内容配置:表单数据;name=“数据”
示例用户
示例通行证
------------------------------9e2a86ef9445--
我怎样才能在两人之间阅读所有的东西 因为它里面的内容不是静态的,它是动态的,在不同的请求中可能会有所不同


非常感谢。

您应该查看php,然后。。你会拥抱自己:)它非常强大。不需要正则表达式。我自己也做了不少的网页清理工作。

这不是简单的使用类吗


您可以使用我最初编写的正则表达式,并根据您的需要进行修改

<?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];

…什么不起作用?@NielsKeurentjes我没有任何输出,我现在对preg\u match非常熟悉。正如natewiley所说,我不知道所有参数,也无法在net.DOMDocument上找到它们。请求标记之间的内容可能跨越行,因此您可能需要尝试添加/s标志(…/si)。我认为你不需要逃避角色,但这样做应该不会有什么坏处。如果其他方法都不起作用,请尝试将\<和\>更改为<>。最后,在另一个请求标记中是否有一个请求标记?如果是这样的话,一个单一的regexp可能做不到这一点。谢谢你的回答,但是有没有与我的问题相关的例子。因为按照我想要的方式使用DomDocument需要时间。你只处理XML吗?是的,只是XML。我用XML发送带有cURL over POST的数据,因为发送的数据非常大,大约100KB。你可以使用simple_XML_load_file()我尝试过simplexml,因为我熟悉它,但它不起作用。我正在用精确的输出更新我的问题。看起来他实际上想要保留xml结构,而不仅仅是通过删除垃圾数据来获取值。依我看,杰克,你说得对。因为xml结构在不同的平台上是不同的requests@mandza,所以您只需要这个
exampleuserexamplepass
??@ShankarDamodaran是的@曼扎,请看我的另一个答案。让这个答案出现在这里,因为它可能会帮助其他人。非常感谢你的努力。当我在您编写它时运行它时,它运行得很好,但是在我拥有的讨厌数据的位置上:-----------------------------------c2fcc86c240b内容处理:表单数据;name=“data”并且当我这样运行它时,它不再工作。有什么问题吗?@mandza,请看编辑后的答案。我的内容与你在问题上发布的内容相同。它返回相同的输出。按ctrl+U查看源以查看标记。
exampleuser
examplepass
<?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];
<request>
<session>
 <user>exampleuser</user>
 <pass>examplepass</pass>
</session>
</request>