从URL管理php中的特定版本curl输出

从URL管理php中的特定版本curl输出,php,curl,Php,Curl,如何在PHP中获得curl的输出 我的代码如下: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://specific.com/version.yaml"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1)

如何在PHP中获得curl的输出

我的代码如下:

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, "https://specific.com/version.yaml");
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $result = curl_exec($ch);
            curl_close($ch);
            $result = preg_match("/(?:version|)\s*((?:[0-9]+\.?)+)/i", $result);
            echo $result
我的yaml文件看起来像这样

version: 3.3.5.1
files:
    add:
        - {local: "styles/admin/default/subnavigation/index.php", remote: "/subnavigation.html"}
        - {local: "styles/admin/default/subnavigation/manage.php", remote: "/subnavigationmanage.html"}
        - {local: "styles/admin/default/servers/manage.php", remote: "/servers_manage.html"}
我想要输出

3.3.5.1
但是有了这段代码,我只得到“1”作为输出。 如果我删除preg_匹配,我会得到完整的代码作为输出。 你能帮我吗?

好的,我找到了解决办法

            $result = curl_exec($ch);
            curl_close($ch);
            preg_match_all("/(?:version|)\s*((?:[0-9]+\.?)+)/i", $result, $matches);
            $i = 0;
            foreach($matches as $resulte) {
                if(++$i > 1) break;
                echo $resulte[0];
            }

如果删除preg_match(),会得到什么结果?你拿到里面的东西了吗?还有比使用正则表达式更好的方法从yaml获取数据。您可以安装并启用PHP,也可以使用来解析它。如果我删除preg,我会得到完整的输出“version:3.3.5.1 files:add:{local:“style/admin/default/subnavigation…”,那么你的问题与cURL无关(因为它返回的结果很好),而是与你的正则表达式有关。你应该编辑你的问题来反映这一点(并包含regex标记,以便所有regex masters都能看到这个问题),或者在第一条注释中使用任何建议的方法解析yaml。