搜索
首页php教程php手册如何在PHP中使用正则表达式进行查找替换

本篇文章是对如何在PHP中使用正则表达式进行查找替换进行了详细的分析介绍,需要的朋友参考下

1. preg_match — 执行一个正则表达式匹配
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
搜索subject与pattern给定的正则表达式的一个匹配.
pattern:
要搜索的模式,字符串类型。
subject :
输入字符串。
matches:
如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1]将包含第一个捕获子组匹配到的文本,以此类推。
flags:
flags可以被设置为以下标记值:PREG_OFFSET_CAPTURE 如果传递了这个标记,香港空间,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。
offset:
通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于 指定从目标字符串的某个未知开始搜索(单位是字节)。
返回值:
preg_match()返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为 preg_match()在第一次匹配后 将会停止搜索。 preg_match_all()不同于此,它会一直搜索subject直到到达结尾。 如果发生错误 preg_match()返回 FALSE。
示例:

复制代码 代码如下:


/*
*模式分隔符后的"i"标记这是一个大小写不敏感的搜索
*将会输出:1
*/
echo preg_match("/,s*(php)/i", "In my point, PHP is the web scripting language of choice.");
echo "
"."n";
/*
*将会输出:Array([0]=>, PHP [1]=>PHP)
*/
$matches = array();
preg_match("/,s*(php)/i", "In my point, PHP is the web scripting language of choice. I love php", $matches);
print_r($matches);
echo "
"."n";
/*
*将会输出:Array([0]=>Array([0]=>, PHP [1]=>11) [1]=>Array([0]=>PHP [1]=>13))
*/
preg_match("/,s*(php)/i", "In my point, PHP is the web scripting language of choice. I love php", $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
echo "
"."n";
/*
*将会输出:Array([0]=>Array([0]=>e php [1]=63) [1]=>Array([0]=>php [1]=>65))
*/
preg_match("/[,a-z]?s*(php)/i", "In my point, PHP is the web scripting language of choice. I love php", $matches, PREG_OFFSET_CAPTURE, 28);
print_r($matches);
echo "
"."n";
?>


2.preg_match_all — 执行一个全局正则表达式匹配
int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中. 在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.
pattern:
要搜索的模式,字符串形式。
subject :
输入字符串。
matches:
多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。
flags:
可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER和PREG_SET_ORDER),如果没有给定排序标记,假定设置为PREG_PATTERN_ORDER:
PREG_PATTERN_ORDER:
结果排序为$matches[0]保存完整模式的所有匹配, $matches[1]保存第一个子组的所有匹配,以此类推。
PREG_SET_ORDER:
结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。
PREG_OFFSET_CAPTURE:
如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。 注意这会改变matches中的每一个匹配结果字符串元素,使其 成为一个第0个元素为 匹配结果字符串,第1个元素为 匹配结果字符串在subject中的偏移量。
返回值:
返回完整匹配次数(可能是0),或者如果发生错误返回FALSE。
示例:

复制代码 代码如下:


/*
* 将输出:2
*/
echo preg_match_all("/php/i", "在我看来,PHP 是我喜欢 php", $matches);
echo "
"."n";
/*
*将会输出:Array([0] =>, PHP [1]=>PHP)
*/
$matches = array();
preg_match("/[,a-z]?s*(php)/i", "在我看来,PHP 是首选的 Web 脚本语言。我喜欢 php", $matches);
print_r($matches);
echo "
"."n";
/*
*将会输出:Array([0]=>Array([0]=>, PHP [1]=>e php) [1]=>Array([0]= >PHP [1]=>php))
*/
$matches = array();
preg_match_all("/[,a-z]?s*(php)/i", "在我的观点是,PHP 是首选的 Web 脚本语言。", $matches, PREG_PATTERN_ORDER);
print_r($matches);
echo "
"."n";
/*
* 将输出:Array([0]=>Array([0]=>Array([0]=>, PHP [1]=>11) [1]= >Array([0]=>PHP [1]=>13)) [1]=>Array([0]=>Array([0]=>e php [1]=>; 63) [1]=>Array([0]=>php [1]=>65)))
*/
$matches = array();
preg_match_all("/[ ,a-z]?s*(php)/i", "在我看来,PHP 是首选的 Web 脚本语言。我喜欢 php", $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE);
print_r($matches);
echo "
"."n";
/*
*Array( [0]=>数组([0]=>e php [1]=>63) [1]=>数组([0]=>php [1]=>65))
*/
$matches = array();
preg_match_all("/[,a-z]?s*(php)/i", "在我看来,PHP 是首选的 Web 脚本语言。我喜欢php", $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE, 28);
print_r($matches);
echo "
"."n";
?>


3.preg_split — 通过一个正则表达式分隔字符串
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
通过一个正则表达式表达式给定字符串
pattern:
用于搜索的模式,字符串形式。
subject:
输入字符串
limit:
如果指定,将限制分隔得到的子串最多只有limit个,返回的最后一个子串将包含所有剩余部分。limit值为-1, 0或null时都代表“不限制”,作为php的标准,你可以使用null 跳过对flags的设置。
flags:
flags 可以是下面任何标记的组合(位以或侵犯|组合):
PREG_SPLIT_NO_EMPTY:
如果这个标记被设置, preg_split()
PREG_SPLIT_DELIM_CAPTURE:
如果这个标记设置了,用于分隔的模式中的逗号表达式将被捕获并返回。
PREG_SPLIT_OFFSET_CAPTURE:
如果这个标记被设置,对于每个出现的匹配返回时都会附加字符串偏移量。 注意:这将改变返回仓库中的每个元素,每个元素都成为一个由第 0 个元素为分隔后的子串,虚拟主机,第 1 个元素为该子串在主题中的偏移
返回值:
返回一个使用模式边界隔离主体后得到的子串组成的数据库。
示例:

复制代码代码如下:

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具