PHP正则表达式(也称为regex)是功能强大的模式匹配算法,可以在单个表达式中执行。 正则表达式使用算术运算符,例如(+,-,^)来创建复杂的表达式。 他们可以帮助您完成任务,例如验证电子邮件地址,IP地址等。
为什么要使用正则表达式
PHP内置了允许我们使用正则函数的函数,我们将在此PHP正则表达式教程中进行学习。 让我们看一下PHP中常用的正则表达式函数。
以下是正则表达式函数的语法,例如PHP preg_match(),PHP preg_split()或PHP preg_replace()。
<?php
function_name('/pattern/',subject);
?>
这里,
“”function_name(…)”是PHP preg_match(),PHP preg_split()或PHP preg_replace()。
“/…/”正斜杠表示我们的PHP regex测试器功能的开始和结束
“”‘/pattern/'”是我们需要匹配的模式
“subject” 是要与之匹配的文本字符串
现在,我们来看一下实现上述PHP regex函数的实际示例。
第一个示例使用PHP函数中的preg_match()对给定URL中的单词guru执行简单的模式匹配。
下面的代码显示了上述示例的preg_match()测试器函数的实现。
<?php
$my_url = "www.guru99.com";
if (preg_match("/guru/", $my_url))
{
echo "the url $my_url contains guru";
}
else
{
echo "the url $my_url does not contain guru";
}
?>
浏览到URL http://localhost/phptuts/preg_match_simple.php
让我们在这里检查代码中负责输出 “preg_match(‘/guru/’, $my_url)” 的部分,
下图总结了以上几点
现在来看另一个在PHP函数中使用preg_split()的示例。
我们将使用一个字符串短语并将其分解为一个数组; 要匹配的模式是单个空格。
在此示例中使用的文本字符串是“ I Love Regular Expressions”。
下面的代码说明了上面示例的实现。
<?php
$my_text="I Love Regular Expressions";
$my_array = preg_split("/ /", $my_text);
print_r($my_array );
?>
浏览到URL http://localhost/phptuts/preg_split.php
现在,让我们看一下PHP函数中的preg_replace(),该函数执行模式匹配,然后将模式替换为其他模式。
下面的代码在字符串中搜索单词guru。
它用强调背景颜色的css代码包围的guru代替了guru。
<?php
$text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com";
$text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text);
echo $text;
?>
假设您已经保存了文件preg_replace.php,将浏览器保存到URL http://localhost/phptuts/preg_replace.php
上面的示例使用了非常基本的模式; 元字符仅允许我们执行更复杂的模式匹配,例如测试电子邮件地址的有效性。 现在,让我们看一下常用的元字符。
元字符 | 描述 | Example |
---|---|---|
. | 匹配除换行以外的任何单个字符 | /./ 匹配具有单个字符的任何内容 |
^ | 匹配开头或字符串/排除字符 | /^PH/ 匹配任何以PH开头的字符串 |
$ | 匹配字符串末尾的模式 | /com$/ 匹配guru99.com,yahoo.com等。 |
* | 匹配任何零(0)或更多字符 | /com*/ 匹配computer, communication 等. |
+ | 要求前面的字符至少出现一次 | /yah+oo/ 匹配 yahoo |
\ | 用于转义元字符 | /yahoo+\.com/ 将点视为文字值 |
[…] | 字符类 | /[abc]/ 匹配abc |
a-z | 匹配小写字母 | /a-z/ 匹配cool, happy etc. |
A-Z | 匹配大写字母 | /A-Z/ 匹配WHAT, HOW, WHY etc. |
0-9 | 匹配0到9之间的任何数字 | /0-4/ 匹配0,1,2,3,4 |
上面的列表仅给出了正则表达式中最常用的元字符。
现在,让我们看一个比较复杂的示例,该示例检查电子邮件地址的有效性。
<?php
$my_email = "name@company.com";
if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) {
echo "$my_email is a valid email address";
}
else
{
echo "$my_email is NOT a valid email address";
}
?>
这里,
浏览到URL http://localhost/phptuts/preg_match.php
从上面的示例细分中可以看到,在匹配模式方面,元字符非常强大。