当我们需要从一段字符串中匹配出所有链接地址时,可以使用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匹配字符中链接地址的方法
基础教程推荐
猜你喜欢
- 用PHP写的一个冒泡排序法的函数简单实例 2024-01-17
- PHP中substr函数字符串截取用法分析 2024-02-02
- Ubuntu下如何升级到PHP7.4的方法步骤 2023-03-17
- 详解php的魔术方法__get()和__set()使用介绍 2023-12-18
- PHP如何使用cURL实现Get和Post请求 2023-04-24
- laravel框架中表单请求类型和CSRF防护实例分析 2023-03-17
- PHP中的输出缓冲控制详解 2023-06-04
- 浅谈定义一个PHP函数 2023-06-12
- PHP常用特殊运算符号和函数总结(php新手入门必看) 2024-02-03
- CodeIgniter框架数据库基本操作示例 2022-10-18