欢迎访问宙启技术站
智能推送

PHP正则表达式函数preg_match()和preg_replace()的实用案例

发布时间:2023-06-15 06:30:37

PHP中的正则表达式函数主要包括preg_match()和preg_replace(),它们的使用在实际开发中非常频繁。下面我们将介绍几个实用案例,帮助大家更好地理解如何应用。

1.验证邮箱格式

$email = 'test@example.com';

$pattern = '/^[a-zA-Z0-9_\.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z]+){1,2}$/';

if (preg_match($pattern, $email)) {

   echo '邮箱格式正确';

} else {

   echo '邮箱格式错误';

}

上述代码中,我们使用preg_match()函数来验证邮箱格式是否正确。正则表达式中,我们定义了邮件地址由字母、数字、下划线、横杠和点号组成,并且必须包含@符号,后面跟着一个域名,域名又由点号分隔的一串英文字母组成。

2.替换字符串中所有数字

$str = 'ABCD1234EFGH5678';

$pattern = '/\d+/';

$replacement = '';

echo preg_replace($pattern, $replacement, $str);

上述代码中,我们使用preg_replace()函数将字符串中的数字全部替换为空字符。正则表达式中,“\d”代表数字,加号代表至少一个数字。$replacement参数中,我们填写了一个空字符来做为替换内容。

3.获取HTML中所有图片的SRC地址

$html = '<img src="https://example.com/image1.jpg" alt="image1"><img src="https://example.com/image2.jpg" alt="image2">';

$pattern = '/<img.+?src=\"(.+?)\".*>/i';

preg_match_all($pattern, $html, $matches);

print_r($matches[1]);

上述代码中,我们使用preg_match_all()函数来获取HTML中所有的IMG标签,并从中提取SRC地址。正则表达式中,我们用到了“.+?”代表非贪婪匹配,以及“\”来对特殊字符进行转义,获取到的SRC地址存放在matches数组中的第二个元素中。

4.过滤HTML标签

$str = '<p>Hello World</p><script>alert("Hello World");</script>';

$pattern = '/<script.*?<\/script>|<[^>]*>/is';

$replacement = '';

echo preg_replace($pattern, $replacement, $str);

上述代码中,我们使用preg_replace()函数将HTML标签过滤掉,只留下文本内容。正则表达式中,我们指定了要过滤的标签,通过竖杠"|"将多个模式合并到一起。其中,<script.*?</script>是用来过滤掉script标签及其中的内容;<[^>]*>则是用来过滤掉其他标签(中括号内的“^”代表除了某个字符以外的所有字符)。最后,我们将替换内容设置为空字符串,从而去除HTML标签。

总结

通过上述实用案例,我们可以看到,PHP中的正则表达式函数preg_match()和preg_replace()可用于各种字符串操作,如验证字符串格式、替换字符串、提取内容等。在实际开发中,我们可以结合正则表达式的语法规则,更加灵活地应用这两个函数,实现更多的功能。