为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据新的分页更新解析shopify分页链接的字符串?

如何根据新的分页更新解析shopify分页链接的字符串?

PHP
墨色风雨 2022-01-14 15:32:28
我有一个包含上一页链接和下一页链接的字符串:Link: "<https://{shop}.myshopify.com/admin/api/{version}/products.json?page_info={next_page_info}&limit={limit}>; rel={next}, <https://{shop}.myshopify.com/admin/api/{version}/products.json?page_info={prev_page_info}&limit={limit}>; rel={previous}"期待输出array(    'next' => {next_page_info},    'prev' => {prev_page_info});链接字符串也有一些条件如下:字符串同时具有下一个和上一个链接字符串只有下一个链接 输出应该是 array('next' => '{next_page_info}' );字符串只有 prev 链接输出应该是 array('prev' => '{prev_page_info}');
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

为所有类型的 URL 返回 page_info。


public function parsePaginationLinkHeader ($headerLink) 

{


    $available_links = [];

    $links = explode(',', $headerLink);

    foreach ($links as $link){


        if (preg_match('/<(.*)>;\srel=\\"(.*)\\"/', $link, $matches)) {


            $query_str = parse_url($matches[1], PHP_URL_QUERY);

            parse_str($query_str, $query_params);

            $available_links[$matches[2]] = $query_params['page_info'];

        }

    }


    return $available_links;

}

响应转储


array(2) {

["previous"]=>

string(143) "eyJwdWJsaXNoZWRfc3RhdHVzIjoicHVibGlzaGVkIiwiZGlyZWN0aW9uIjoicHJldiIsImxhc3RfaWQiOjM3NDc0NDA1NTgxNjQsImxhc3RfdmFsdWUiOiJhbHBoYWJldCB0LXNoaXJ0In0"

["next"]=>

string(188) "eyJwdWJsaXNoZWRfc3RhdHVzIjoicHVibGlzaGVkIiwiZGlyZWN0aW9uIjoibmV4dCIsImxhc3RfaWQiOjE1MjAyMzAzMzQ1NDgsImxhc3RfdmFsdWUiOiJBc3ltbWV0cmljIEhpZ2ggV2Fpc3QgU2hvcnQgU2xlZXZlIFJlZCBQYXJ0eSBEcmVzcyJ9"

}


查看完整回答
反对 回复 2022-01-14
?
偶然的你

TA贡献1841条经验 获得超3个赞

你可以试试我写的这个功能,只需将链接文本或整个标题信息发送给它


 private function render_links($Link)

    {

        $combined_links = [];

        $links = explode(',', $Link);

        foreach ($links as $link){

            if (preg_match('#<(http(?:s)?:\/\/.*\.myshopify.com\/.*products.json\?.*)>;.*rel=\\"(.*)\\"#', $link, $matches)) {

                $combined_links[$matches[2]] = $matches[1];

            }

        }


        return $combined_links;


    }

它将像这样的链接作为数组返回


"previous":"limit=1&fields=id%2Cimages&page_info=eyJkaXJlY3Rpb24iOiJwcmV2IiwibGFzdF9pZCI6NDA5OTUyMjM5NjE5NSwibGFzdF92YWx1ZSI6InNmc2Rmc2YifQ",

"next":"limit=1&fields=id%2Cimages&page_info=eyJkaXJlY3Rpb24iOiJuZXh0IiwibGFzdF9pZCI6NDA5OTUyMjM5NjE5NSwibGFzdF92YWx1ZSI6InNmc2Rmc2YifQ"



查看完整回答
反对 回复 2022-01-14
  • 2 回答
  • 0 关注
  • 228 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信