php - preg_match html代码 <request></request>

标签 php curl preg-match

我使用 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/

相关文章:

php - 正确重定向访问者(PHP 和 Regex)

php - 什么是 PDO 可滚动游标?

php - 在网站上显示SQL表数据

php - curl 在命令行中工作正常,但在 php 中不行

ruby-on-rails - 在 windows xp(32 位)上的 Ruby on Rails 上安装 Typhoeus

php - 如何从问号后的 url 中删除内容。 preg_match 还是 preg_replace?

javascript - 使用 php 将 append javascript 中的值 POST 提交到 mysql

php - 使用命名空间进行自动加载

android - curl_multi_wakeup 似乎没有唤醒关联的 curl_multi_poll - Android(但可能不限于)

php - 从文本中提取 4 位数字