php - 如何根据新的分页更新解析shopify分页链接的字符串?
问题描述
我有一个包含上一页链接和下一页链接的字符串:
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}');
解决方案
为所有类型的 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"
}
推荐阅读
- file - 无论文件在 Java 8 ro Java 10 中的扩展名如何,我如何对文件进行密码保护
- authentication - 使用 AXIOS 进行 JWT 身份验证
- c# - 如何在 ef core 中使用 fluent API 添加复合主键?
- mysql - 如何创建 MySQL 视图以通过相关表显示嵌套集模型中每个节点的所有路径?
- mysql - 如果第二个表具有条件值,则插入表中
- algorithm - 将数组划分为具有最小总方差的子集的算法
- javascript - undercore _.sortBy 未正确排序数组对象
- laravel - 在远程服务器上创建符号链接设置 Laravel 5.6
- angular - I used mat-table in angular 6 application to display the data but the result is coming as empty spaces
- javascript - JavaScript/jQuery 在脚本中添加锚标记