Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 与包含要在preg_grep上使用的字符串组元素的字符串相匹配的模式_Php_Regex_Combinations - Fatal编程技术网

Php 与包含要在preg_grep上使用的字符串组元素的字符串相匹配的模式

Php 与包含要在preg_grep上使用的字符串组元素的字符串相匹配的模式,php,regex,combinations,Php,Regex,Combinations,几个星期以来,我一直在为这个问题绞尽脑汁,却找不到或创造出正确的答案: 假设我有一个包含以下元素的数组: ',1,' ',2,' ',1,2,' ',1,3,' ',1,2,3,' 通过使用PHP函数preg_grep,我想得到所有可能的组合,其中包含元素1或/和2(包含或),但只包含1和2,所以在本例中我想得到的元素基本上是: ',1,' ',2,' ',1,2,' 有什么想法吗 谢谢 编辑:根据anubhava的要求,我将使用以下数据集: ,13598135991360013601136

几个星期以来,我一直在为这个问题绞尽脑汁,却找不到或创造出正确的答案:

假设我有一个包含以下元素的数组:

',1,'
',2,'
',1,2,'
',1,3,'
',1,2,3,'
通过使用PHP函数preg_grep,我想得到所有可能的组合,其中包含元素1或/和2(包含或),但只包含1和2,所以在本例中我想得到的元素基本上是:

',1,'
',2,'
',1,2,'
有什么想法吗

谢谢

编辑:根据anubhava的要求,我将使用以下数据集:

,135981359913600136011360213603136041360513606

,1359813599136001360213603136041360513606

,1359913600136011360213603136041360513606

,1359813599136001360113602136041360513606

,1359813599136001360113603136041360513606

,1359813599136001360113602136031360413606

,13599136001360213603136041360513606

,13598136001360113602136041360513606

,13598135991360013602136041360513606

,13598136001360113603136041360513606

,13599136001360113602136041360513606

,1359913601136021363136041360513606

,13599136001360113603136041360513606

,13598135991360013602136031360413606

,13598135991360013601136041360513606

,13599136001360113602136031360413605

,13598136001360213603136041360513606

,13599136001360113602136031360413606

,13600136011360213603136041360513606

,135981359913603136041360513606

,13599136011360213631360413605

,136001360113602136031360413606

,135991360113603136041360513606

,135981359913600136041360513606

,13599136011360213641360513606

,136001360213603136041360513606

,135981359913600136021360413605

,135981359913600136021360413606

,135981360013602136031360413606

,135981360113603136041360513606

例如,我正在寻找我所称的所有“孩子”:

,1359813599136001360113602136031360413606

因此,基本上列表中包含一个或多个数字的每个人:

1359813599136001360113602136031360413606


只有那些数字。

您可以在
preg\u grep
中使用此正则表达式:

/^,((?:13598|13599|13600|13601|13602|13603|13604|13606),)+$/

您可以在数组上循环,并使用字符串函数检查是否存在
,1,
或/和
,2,
。问题是,在本例中,数组包含大约500万个条目,我编写的只是一个简单的示例,双循环不仅消耗大约3gb内存,而且还需要一个小时。在单个数组中?您可能希望改为在数据库中执行此操作(如果信息来自于…)。如果我可以实现此操作,那么我还可以在db表上的聚合查询上使用相同的正则表达式:),该正则表达式只适用于数字0到9,如果我达到10,它就不起作用了。请通过编辑您的问题并添加此正则表达式不起作用的示例数据来清楚地解释您的问题。谢谢!!你真棒!我会投赞成票,但这件事不让我因为声誉:(不客气,很高兴它奏效。接受答案就足够了:)