本篇文章是对如何在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 个元素为该子串在主题中的偏移
返回值:
返回一个使用模式边界隔离主体后得到的子串组成的数据库。
示例:
复制代码代码如下:

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)