当我们需要从一段字符串中匹配出所有链接地址时,可以使用PHP正则表达式来实现。以下是具体步骤:
当我们需要从一段字符串中匹配出所有链接地址时,可以使用PHP正则表达式来实现。以下是具体步骤:
1.使用preg_match_all()
函数进行字符串匹配,它返回一个包含所有匹配结果的数组。
2.所需的正则表达式可以使用已知的链接地址末端(.com、.cn等)或url特征(以http或www开头)来构建。可以使用以下正则表达式:
$pattern = "/(http(s)?:\/\/)?(www\.)?\w+\.\w+(\.\w+)?\/?(\?[\w=&-]*)?/i";
以上正则表达式的含义是:
- (http(s)?:\/\/)? 匹配以http://或https://开头的字符串,?表示该部分可选。
- (www.)? 匹配以www.开头的字符串,?表示该部分可选。
- \w+.\w+(.\w+)? 匹配域名部分,或者带有子目录的URL。
其中,\w表示匹配数字、字母或下划线,+表示匹配前面的元素一次或多次,.表示匹配点号,(.\w+)?表示可以匹配一个或多个子目录。
- \/? 表示匹配可选的"/"字符。
- (\?[\w=&-]*)? 表示匹配可选的URL参数。
3.将匹配结果存入一个数组中。
以下是两个代码示例:
示例1:匹配已知链接地址末端
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quis www.google.com et elit.";
$pattern = "/\w+\.com/i";
preg_match_all($pattern, $text, $matches);
print_r($matches[0]);
输出结果为:
Array
(
[0] => www.google.com
)
示例2:匹配url特征
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quis https://www.baidu.com/ et elit.";
$pattern = "/(http(s)?:\/\/)?(www\.)?\w+\.\w+(\.\w+)?\/?(\?[\w=&-]*)?/i";
preg_match_all($pattern, $text, $matches);
print_r($matches[0]);
输出结果为:
Array
(
[0] => https://www.baidu.com/
)
通过以上方法,我们可以轻松地匹配出一段字符串中的所有链接地址。
沃梦达教程
本文标题为:php匹配字符中链接地址的方法


猜你喜欢
- 浅谈swoole的作用与原理 2022-09-01
- 分析PHP中单双引号的误区和双引号小隐患 2024-02-17
- 安装docker和docker-compose实例详解 2023-01-31
- PHP判断是否是微信打开,浏览器打开的方法 2022-10-08
- 在PHP中灵活使用foreach+list处理多维数组的方法 2023-05-09
- 详解PHP中的命名空间 2023-06-04
- Laravel路由中不固定数量的参数如何实现? 2022-10-02
- 基于laravel where的高级使用方法 2023-02-22
- laravel实现上传图片并在页面显示的例子 2023-03-02
- thinkphp6使用mysql悲观锁解决商品超卖问题的实现 2023-06-19