700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match preg_replace

POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match preg_replace

时间:2020-04-01 08:56:44

相关推荐

POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match  preg_replace

php教程|php手册

preg_match,preg_replace,ereg,e

php教程-php手册

全局钩子源码,vscode设置run,ubuntu初始密码多少,tomcat用户登录,sqlite查询所有记录,jq回到顶部 插件,最好的移动前端框架,人体爬虫电影下载,php 去除字符,SEO问答交流障碍,资源下载网站模版,vc获取网页窗口内容,购物项目模板下载,织梦会员注册页面,java宿舍管理系统开题报告,计费管理系统程序代码lzw

POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace) ,需要的朋友可以参考下。

小圈子app源码,vscode扩展搜索,ubuntu待遇,tomcat漏洞应用,sqlite3删除单行,zblog2.0插件下载,mvc中常用的前端ui框架,网络爬虫制作公司有哪些,php提醒功能,滨州seo外包报价,酒店网站jsp源码,微店网页对接,特效文字模板lzw

PC蛋蛋app网站源码,vscode查看文件函数,ubuntu继承分区,为什么有tomcat,作者爬虫,php sleep 函数,整站seo企业谁家好,网站源程序安全服务器端,电影院 模板 开源lzw

首先来看看 POSIX 风格正则表达式的两个主要函数:

ereg 函数:(正则表达式匹配)

格式:int ereg ( string pattern, string string [, array &regs] )

注意:使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。(一般的话还是使用 preg_match() ,比较好勒~~)

以区分大小写的方式在 string 中寻找与给定的正则表达式 pattern 所匹配的子串。如果找到与 pattern 中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数 regs,则匹配项将被存入 regs 数组中。$regs[1] 包含第一个左圆括号开始的子串,$regs[2] 包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。

返回值:如果在 string 中找到 pattern 模式的匹配则返回 所匹配字符串的长度,如果没有找到匹配或出错则返回 FALSE。如果没有传递入可选参数 regs 或者所匹配的字符串长度为 0,则本函数返回 1。

来看看 ereg() 函数的例子:

以下代码片断接受 ISO 格式的日期(YYYY-MM-DD)然后以 DD.MM.YYYY 格式显示:

复制代码 代码如下:

<?php

if (ereg (“([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})”, $date, $regs)) {

echo “$regs[3].$regs[2].$regs[1]”;

} else {

echo “Invalid date format: $date”;

}

?>

———————————————————————————–

ereg_replace 函数:(正则表达式替换)

格式:string ereg_replace ( string pattern, string replacement, string string )

函数说明:

本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为 replacement。

返回替换后的字符串。(如果没有可供替换的匹配项则会返回原字符串。)

如果 pattern 包含有括号内的子串,则 replacement 可以包含形如 \\digit 的子串,这些子串将被替换为数字表示的第几个括号内的子串;\\0 则包含了字符串的整个内容。最多可以用九个子串。括号可以嵌套,此情形下以左圆括号来计算顺序。

如果未在 string 中找到匹配项,则 string 将原样返回。

来看看这个函数例子吧:

1,下面的代码片断输出 “This was a test” 三次:

复制代码 代码如下:

<?php

$string = “This is a test”;

echo str_replace(” is”, ” was”, $string);

echo ereg_replace(“( )is”, “\\1was”, $string);

echo ereg_replace(“(( )is)”, “\\2was”, $string);

?>

要注意的一点是如果在 replacement 参数中使用了整数值,网站空间,则可能得不到所期望的结果。这是因为ereg_replace() 将把数字作为字符的序列值来解释并应用之。例如:

2,replacement 参数为整数时的例子:

复制代码 代码如下:

<?php

/* 不能产生出期望的结果 */

$num = 4;

$string = “This string has four words.”;

$string = ereg_replace(‘four’, $num, $string);

echo $string; /* Output: ‘This string has words.’ */

/* 本例工作正常 */

$num = ‘4’;

$string = “This string has four words.”;

$string = ereg_replace(‘four’, $num, $string);

echo $string; /* Output: ‘This string has 4 words.’ */

?>

3,将 URL 替换为超链接:

复制代码 代码如下:

$text = ereg_replace(“[[:alpha:]]+://[^[:space:]]+[[:alnum:]/]”,

“\\0”, $text);

提示: preg_replace() 函数使用了 Perl 兼容正则表达式语法,通常是比 ereg_replace() 更快的替代方案。

再来看看 Perl 兼容正则表达式的两个主要函数:

preg_match 函数:(进行正则表达式匹配)

格式:int preg_match ( string pattern, string subject [, array matches [, int flags]] )

函数说明:

在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。

如果提供了 matches,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。

flags 可以是下列标记:

PREG_OFFSET_CAPTURE

如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。本标记自 PHP 4.3.0 起可用。

flags 参数自 PHP 4.3.0 起可用。

preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。preg_match_all() 则相反,会一直搜索到 subject 的结尾处。如果出错 preg_match() 返回 FALSE。

Tips: 如果只想查看一个字符串是否包含在另一个字符串中,不要用 preg_match()。可以用 strpos() 或 strstr() 替代,要快得多。

来看看它的例子吧:

例 1. 在文本中搜索“php”:

复制代码 代码如下:

<?php

// 模式定界符后面的 “i” 表示不区分大小写字母的搜索

if (preg_match (“/php/i”, “PHP is the web scripting language of choice.”)) {

print “A match was found.”;

} else {

print “A match was not found.”;

}

?>

例 2. 搜索单词“web”:

复制代码 代码如下:

<?php

/* 模式中的 \b 表示单词的边界,因此只有独立的 “web” 单词会被匹配,

* 而不会匹配例如 “webbing” 或 “cobweb” 中的一部分 */

if (preg_match (“/\bweb\b/i”, “PHP is the web scripting language of choice.”)) {

print “A match was found.”;

} else {

print “A match was not found.”;

}

if (preg_match (“/\bweb\b/i”, “PHP is the website scripting language of choice.”)) {

print “A match was found.”;

} else {

print “A match was not found.”;

}

?>

例 3. 从 URL 中取出域名:

复制代码 代码如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。