PHP:拆分 cookie 值并计算部分
PHP: Split cookie value and count parts
我是 PHP 初学者,希望这里有人可以帮助我。
我有一个类似于以下示例的字符串,其中分隔符是下划线并且字符串的长度可以变化。
三位数字是ID,括号中的数字是计数。
示例: 101(2)_102(3)_103(5)
我正在寻找一种方法来拆分它,以便我可以访问每个 ID 和每个计数,以便将它们用于进一步的计算等。
我尝试使用 explode 但无法正常工作。
我的尝试:
print_r(explode("_", $_COOKIE['myCookieName']));
我假设我需要在这里创建一个数组。
预期输出(示例): Total IDs: 3, total count: 10
有人能告诉我如何实现吗?
非常感谢,
麦克
您可以使用 preg_match_all
to extract the id
and count
values and then count
and sum
他们:
$cookie = '101(2)_102(3)_103(5)';
preg_match_all('/(?<=^|_)([^(]+)\((\d+)\)(?=_|$)/', $cookie, $matches);
$ids = $matches[1];
$counts = $matches[2];
echo "Total IDs: " . count($ids) . ", total count: " . array_sum($counts);
输出:
Total IDs: 3, total count: 10
请注意,您可能会发现使用 id
值索引的计数数组更有用,您可以在 preg_match_all
的输出中使用 array_combine
:
$counts = array_combine($matches[1], $matches[2]);
echo "Total IDs: " . count($counts) . ", total count: " . array_sum($counts). PHP_EOL;
稍微简单一点的版本应该也可以:
$cookie = '101(2)_102(3)_103(5)';
preg_match_all('/\((\d+)\)/', $cookie, $matches);
[, $counts] = $matches;
echo 'Total IDs: ', count($counts), ', total count: ', array_sum($counts);
我是 PHP 初学者,希望这里有人可以帮助我。
我有一个类似于以下示例的字符串,其中分隔符是下划线并且字符串的长度可以变化。 三位数字是ID,括号中的数字是计数。
示例: 101(2)_102(3)_103(5)
我正在寻找一种方法来拆分它,以便我可以访问每个 ID 和每个计数,以便将它们用于进一步的计算等。 我尝试使用 explode 但无法正常工作。
我的尝试:
print_r(explode("_", $_COOKIE['myCookieName']));
我假设我需要在这里创建一个数组。
预期输出(示例): Total IDs: 3, total count: 10
有人能告诉我如何实现吗?
非常感谢,
麦克
您可以使用 preg_match_all
to extract the id
and count
values and then count
and sum
他们:
$cookie = '101(2)_102(3)_103(5)';
preg_match_all('/(?<=^|_)([^(]+)\((\d+)\)(?=_|$)/', $cookie, $matches);
$ids = $matches[1];
$counts = $matches[2];
echo "Total IDs: " . count($ids) . ", total count: " . array_sum($counts);
输出:
Total IDs: 3, total count: 10
请注意,您可能会发现使用 id
值索引的计数数组更有用,您可以在 preg_match_all
的输出中使用 array_combine
:
$counts = array_combine($matches[1], $matches[2]);
echo "Total IDs: " . count($counts) . ", total count: " . array_sum($counts). PHP_EOL;
稍微简单一点的版本应该也可以:
$cookie = '101(2)_102(3)_103(5)';
preg_match_all('/\((\d+)\)/', $cookie, $matches);
[, $counts] = $matches;
echo 'Total IDs: ', count($counts), ', total count: ', array_sum($counts);