首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我使用preg_match_all php时array_unique()不工作

当使用preg_match_all函数进行正则匹配时,array_unique()函数可能不起作用的原因是preg_match_all返回的匹配结果是一个二维数组,而array_unique()函数默认只能去除一维数组中的重复值。要解决这个问题,可以使用array_map函数结合serializeunserialize函数来处理二维数组。

以下是一个完善且全面的答案:

preg_match_all是PHP中用于执行正则表达式全局匹配的函数。它的语法如下:

代码语言:txt
复制
preg_match_all(string $pattern, string $subject, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]): int|false

其中,$pattern是正则表达式模式,$subject是要进行匹配的字符串,$matches是一个引用变量,用于存储匹配结果的数组,$flags是一个可选参数,用于指定匹配模式,$offset是一个可选参数,用于指定搜索的起始位置。

当使用preg_match_all进行匹配时,返回的匹配结果是一个二维数组$matches,其中第一个维度表示匹配到的整个模式字符串,第二个维度表示匹配到的子模式字符串。例如,假设使用如下代码进行匹配:

代码语言:txt
复制
$pattern = '/([a-z]+)/';
$subject = 'abc def ghi';
preg_match_all($pattern, $subject, $matches);

$matches的值将会是:

代码语言:txt
复制
array(
    0 => array('abc', 'def', 'ghi'),   // 匹配到的整个模式字符串
    1 => array('abc', 'def', 'ghi')    // 匹配到的子模式字符串
)

如果想要去除匹配结果中的重复值,可以使用array_map结合serializeunserialize函数来处理二维数组。具体代码如下:

代码语言:txt
复制
$pattern = '/([a-z]+)/';
$subject = 'abc def ghi';
preg_match_all($pattern, $subject, $matches);

$uniqueMatches = array_map("unserialize", array_unique(array_map("serialize", $matches)));

这样,$uniqueMatches将只包含不重复的匹配结果。请注意,这种方法会使匹配结果中的所有值都被序列化,因此可能会导致一些副作用。

对于以上问题,腾讯云没有具体的产品与之对应,因此无法提供相关推荐的产品和产品介绍链接地址。但腾讯云提供了全面的云计算服务,包括计算、存储、数据库、人工智能等领域,可根据具体需求选择相应的产品。详细信息请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

php函数笔记

TIME: 20190120 工作几年回过头来发现最近真理这篇post都是17年4月份了。看来工作之后真是进步或许没时间亦或变懒,不为简单函数做笔记。 大多都外链工具所用到的,整理整理,以便后用。...isset($ab)判断$ab是否存在 error_reporting(0);//禁用错误报告 使用@符号也可以 explode("/",$str)把字符串以/分割为数组 preg_match_all...share/", //使用preg_match_all正则匹配数据并保存到$titleList数组中 $ukidList[0][1]表示第1数组【第一个括弧的值,如.*?】...curl_exec($ch); $result = ob_get_contents() ; ob_end_clean(); echo $result; set_time_limit(0);//为0:...设置此函数的话默认为30s str_replace()使用一个字符串替换字符串中的另一些字符。 header()向客户端浏览器发送 HTTP 。

1.2K20
  • PHP 中最常用的 100 个函数

    PHP 静态分析引擎 Exakat 分析了 1900 个 PHP 开源项目,整理了最常用的 100 个 PHP 函数: 排行 函数 1 count 2 is_array 3 substr 4 in_array...call_user_func 48 call_user_func_array 49 fopen 50 microtime 51 fclose 52 is_int 53 is_file 54 array_slice 55 preg_match_all...str_repeat 59 serialize 60 array_filter 61 mkdir 62 is_callable 63 ltrim 64 ob_start 65 round 66 fwrite 67 array_unique...数组中排序中使用键比使用值更频繁。 读取文件的函数比写入文件的函数应用的多,另外通常使用 file_get_contents 读取文件,使用 fwrite 写入文件。...array, echo, print, empty, isset 和其他语言结构,因为不能算作 PHP 函数,所以没有纳入此排名,但是它们的使用度肯定是非常高的。

    26950

    PHP正则表达式_python正则匹配字母

    ) ) preg_match_all('/php\w+php/U','php123phpphp456php',$arr); print_r($arr); //结果为Array ( [0] => Array...,返回与某个模式匹配的字符串数组 2、preg_match()   搜索模式,匹配返回true,匹配返回false 3、preg_match_all()   在字符串匹配模式的所有出现,然后将所有匹配的全部放入数组...('/php[0-9]/','php5');//返回1 //preg_match_all() preg_match_all('/php[0-9]/','php5php6php7',$arr); print_r...量词、元字符、修饰符,每个都不能忽视,搭配起来使用,多多练习才能熟能生巧。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.7K20

    php拼接循环拼接字符串数组,PHP数组拼接

    最近的工作中老是要遇到将两个数组进行拼接的操作。下面总结一下数组拼接的几个函数及它们的不同点。...PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!...总结一句就是,用+拼接,键名一样只认先出现的(前任),用array_merge拼接,键名一样,分键名为数字还是字符串(看脸),数字覆盖,字符串时会覆盖原来的值(字符串比较丑,数字比较漂亮)。...1002) [2]=> int(1003) [3]=> int(1004) [4]=> int(1005) } $c = array(‘1003′,’1004′,’1005′,’1005’); e = array_unique...+++++ //输出: array(3) { [0]=> string(4) “1003” [1]=> string(4) “1004” [2]=> string(4) “1005” } 数组拼接也是PHP

    17.5K20

    十个PHP 高级工程经典面试题

    1.PHP 如何实现不用自带的 cookie 函数为客户端下发 cookie。对于分布式系统,如何来保存 session 值。 这个题有点绕。考的还是 COOKIE 和 SESSION 的基础知识。...它将主动发送一个 SYNC 命令 (首先 Master 会启动一个后台进程,将数据快照保存到文件中 [rdb 文件] Master 会给 Slave 发送一个 Ping 命令来判断 Slave 的存活状态 当存活...当第一次链接 或者是 故障后 重新连接 都会先判断 Slave 的存活状态 在做全部数据的同步 , 之后只会同步 Master 的写操作 (将命令发送给 Slave) 问题: 当 Master 同步数据...>/'; $ret = preg_match_all($reg_tag, $content, $match_result); $pic_url_array = array_unique...假设老鼠的个数为 A,则有 2^A>=10; A=4; 思路很简单,十瓶药编号:0,1,10,11....1001; 0 喝。

    1.1K20

    PHP基础编程之鬼斧神工的正则表达式-正则表达式初探+常用的正则表达式函数

    前言 很多小伙伴在学习php中,正则表达式是一道过不去的坎,初学者在看到正则表达式的复杂符号,总会一头雾水,丈二的和尚摸不着头脑,冷月在刚刚开始学习正则表达式也是一头懵。...() preg_match() 和preg_match_all()用于执行一个正则表达式匹配。...区别只有在匹配字符串数组preg_filter 只返回匹配结果,匹配的直接忽略,而 preg_replace 将不匹配的结果也一起返回。 我们来看一段示例代码: | : - 也就是说,在使用正则表达式,有些特殊字符有其他特定的意义,而使用preg_split()转义后,可以被PHP正则函数正常的识别。...好了,今天冷月的分享就到这里了,小伙伴们在学习了本博文后,应该对正则表达式的使用有了一定的理解。

    65210
    领券