php - 在 & 但不是 && 处拆分字符串

标签 php preg-split

我有一个包含 &&& 的 URI,我只需要在单个 & 分隔符处将它拆分成一个数组,例如query1=X&query2=A&&B&query3=Y

应该打印出来

array(
0   =>  query1=X
1   =>  query2=A&&B
2   =>  query3=Y
)

我知道我可以使用 preg_split 但不知道正则表达式。有人可以帮忙吗?

最佳答案

使用 preg_match_all (不是孤立的 & 符号):

preg_match_all('~[^&]+(?:&&[^&]*)*|(?:&&[^&]*)+~', $uri, $result);

使用 preg_split (向前和向后检查 lookarounds):

$result = preg_split('~(?<!&)(?:&&)*+\K&(?!&)~', $uri);

(当有“&&”时强制模式失败):

$result = preg_split('~&(?:&(*SKIP)(*F))?~', $uri);

没有正则表达式(将“&&”翻译成另一个字符并展开):

$result = explode('&', strtr($uri, ['%'=>'%%', '&&'=>'%']));
$result = array_map(function($i) { return strtr($i, ['%%'=>'%', '%'=>'&&']); }, $result);

关于php - 在 & 但不是 && 处拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39969134/

相关文章:

php - 仅当被文本包围时才拆分

php - 如何为 LAMP 删除 WIMP

php - 来自 $_SERVER ['HTTP_REFERER' ] 的结果,当 referer header 未发送到服务器时

php - 将数组传递给 PL/pgSQL 存储过程时出错

php - 将字符串划分为关联数组

php - 拆分 html 代码标签和内容

php - 在 MySQL 中获取下一个时间戳

php - 从数据库中搜索字符串并获取接近单词的 php

php - 使用explode、split或preg_split来存储和获取多个数据库条目

php - preg_split 将所有结果捕获到数组中