扫码关注官方订阅号
preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i", $str, $matches)
这个正则中的|\s|()代表什么意思?有人知道吗
ringa_lee
我把每一部分都解释给题主吧。
#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i
两边的 # 是 PCRE 分隔符,最后一个 i 表示忽略大小写。
#
i
(^|\s|\()
字符串开头,或者有空格分隔,或者匹配一个左括号。这个部分是一个未命名分组。
((http(s?)://)|(www\.))
匹配 http:// 或者 https:// 或者 www. 。这个部分是一个未命名分组,其中又分成两个未命名分组。
http://
https://
www.
(\w+[^\s\)\<]+)
匹配至少一个字母数字,之后再匹配至少一个不是空格、右括号、左尖括号的字符。这里又是一个未命名分组。
结束。
推荐两个debug正则的站点:
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我把每一部分都解释给题主吧。
两边的
#
是 PCRE 分隔符,最后一个i
表示忽略大小写。字符串开头,或者有空格分隔,或者匹配一个左括号。这个部分是一个未命名分组。
匹配
http://
或者https://
或者www.
。这个部分是一个未命名分组,其中又分成两个未命名分组。匹配至少一个字母数字,之后再匹配至少一个不是空格、右括号、左尖括号的字符。这里又是一个未命名分组。
结束。
推荐两个debug正则的站点: