当我们需要从一段字符串中匹配出所有链接地址时,可以使用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匹配字符中链接地址的方法 - Python技术站