php正则表达式及字符串处理函数

正则表达式中的原子


原子是正则表达式的最基本的组成单元,而且在每个模式中最少要少包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成,具体分为5类。
    1. 普通字符作为原子: 如 a~z、A~Z、0~9 等
    2. 一些特殊字符和转义后元字符作为原子:
所有标点符号,但语句特殊意义的符号需要转义后才可作为原子,如:\” \’ \* \+ \? \. 等
    3. 一些非打印字符作为原子: 如:\f \n  \r \t \v \cx
    4. 使用“通用字符类型”作为原子:如:\d \D \w \W \s \S。

    5. 自定义原子表([])作为原子:如:’/[apj]sp/’ ’/[^apj]sp/’

正则表达式中常用的非打印字符                                                                                                               正则表达式中常用的“通用字符类型”

正则表达式中的元字符


模式修正符号

可以修正正则表代式的解释, 或扩充了正则表达式的功能

 *      i : 修正正则表达式不区分大小写(默认是区分大小写的)    
 *
 *      m : 修正符号修正正则表达式可以视为多行, 在使用 ^ 或 $ 这两个符号时, 每一行满足都可以。  (默认视为一行处理)
 *
 *      s:  修正正则表达式中的 . 可以匹配换行符号 (默认 . 不能匹配回车符号)
 *
 *      x:  修正正则表达式,可以省略空白
 *
 *      U:  (.*, .+) 正则表达式比较贪婪,   .*?  .+?(不能都用,都用=没用)




字符串处理函数

*  分割、匹配、查找、替换
 *
 *  1. 字符串处理函数 (处理快, 但有一些做不到)
 *
 *  2. 正则表达式函数  (功能强大,但效率要低)
 *
 *
 *  注意:如果可以直接使用字符串处理函数处理的字符串,就不要使用正则处理
 *
 *
 *  
 * 匹配查找:
 *
 *     strstr  strpos substr
 *
 *
 * 正则匹配查找
 *
 *     preg_match()   preg_match_all()   preg_grep();
 *
 *
 * 分割:
 *    explode()   implode() -- join()
 *
 *
 *正则表达式
    preg_split()  
 *
 *
 *
 * 替换
 *     字符串处理  str_replace()
 *
 *
 *     正则表达式  preg_replace()    
 *
 *
 *     strtoupper();

<?php
	$str="这是周小姐的网站http://www.misszhou.net 这是百度的网站http://www.baidu.com
	这是csdn的网站http://csdn.net 这是瞎编的网站https://www.fdfhs.cn/php/demo.inc.php?use=admin&p=123";
	$reg='/(https?):\/\/(www|mail|bbs)\.(.*?)\.(net|com|cn)([\w-\.\*\?\%\=\/]*)?/';
	if(preg_match_all($reg,$str,$arr))
	{
		echo '<pre>';
	//	echo "正则<b>{$reg}</b>,和字符串<b>{$str}</b>匹配成功<br>";
	//	print_r($arr);
		echo '</pre>';
	}
	else echo "匹配失败<br>";
	$str="这是zyj@163.com网站";
	$str="这是z+yj+yj@163.com网站";
	$str="这是z-yj@163.com网站";
	$str="这是z.yj@163.com网站";
	$reg='/\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i';
	if(preg_match_all($reg,$str,$arr))
	{
		echo '<pre>';
		echo "正则<b>{$reg}</b>,和字符串<b>{$str}</b>匹配成功<br>";
		print_r($arr);
		echo '</pre>';
	}
	else echo "匹配失败<br>";

<?php
	$str="missZhou";
	if(stristr($str,"zhou")){
	//	echo "exist";
	}
	else echo "no";
	echo strpos($str,"m");//躲开第一个字符!返回0
	function getfilename($url)
	{
		$loc=strrpos($url,"/")+1;
		return substr($url,$loc);
	}
	echo getfilename("http://www.baidu.com/a/demo.php")."<br>";
	echo getfilename("../img/aa.gif");

<?php
	if(isset($_POST['dosubmit'])){
		if(!preg_match("/^\S+$/",$_POST['usename']))
		{
			echo "空";
		}
	}
?>
<form action="" method="post">
	usename:<input type="text" name="usename" value="" /><br>
	<input type="submit" name="dosubmit" value="submit"><br>
</form>

<?php
	$str="i am MissZhou.
	i will study hard,
	i will gain!";
	print_r(preg_split('/(.,!?)/',$str,-1,PREG_SPLIT_NO_EMPTY|PREG_SPLIT_OFFSET_CAPTURE));//[]()不一样!
	//[]  Array ( [0] => i am MissZhou [1] => i will study hard [2] => i will gain [3] => ) 
	//() Array ( [0] => i am MissZhou. i will study har [1] => i will gain! ) 
	print_r(explode(" ",$str,2));//限制个数 都当成最后一个 不能用空字符串分割
	$arr=preg_split('//',$str,-1);
	echo implode("++++",$arr)."<br>";
	list($a,$b)=explode("_","zy_j");
	echo $a."<br>";
	echo $b."<br>";

<?php
	$str="MissZhou will lose";
	$num=0;
	$newstr=str_replace("lose","win",$str,$num);
	//echo $str."<br>";
	//echo $newstr."<br>";
	//echo $num;
	$str="周小姐bushi最棒";
	$newstr=str_replace(array("bushi"),array("当然是"),$str);//数组用于对应对换
	echo $newstr;

<?php
	$str="MissZhou is <b>best</b>";
	$html="/\<[\/\!]*?[^\<\>]*?\>/is";
	$newstr=preg_replace($html,"",$str);
	echo $newstr."<br>";
	echo $str;

感觉正则部分学的太粗略了,开学一定补上























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 PHP正则表达式函数 preg_match() 可以匹配字符串。以下是一个示例: ```php $str = "Hello, World!"; $pattern = "/\bWorld\b/"; if (preg_match($pattern, $str)) { echo "Match found!"; } else { echo "Match not found."; } ``` 这段代码将输出 "Match found!",因为 $str 中包含单词 "World",并且 $pattern 中使用了单词边界 \b 进行匹配。请注意,正则表达式模式需要用斜杠 / 包围。 ### 回答2: PHP正则表达式是一种强大的字符串匹配工具,能够根据特定模式来匹配和处理字符串。在PHP中,可以使用preg_match函数来进行正则表达式的匹配。 preg_match函数接受三个参数,分别是正则表达式模式、目标字符串和可选的匹配结果输出变量。函数会在目标字符串中查找是否存在与正则表达式模式匹配的内容,如果匹配成功,则返回true,否则返回false。 正则表达式模式由特定的字符和符号组成,用于描述需要匹配的字符串规则。例如,使用\d可以匹配一个数字字符,\w可以匹配一个字母数字字符。 对于复杂的正则表达式模式,我们可以使用特定的字符类、量词和分组等特性来实现更准确的匹配。例如,使用[a-z]可以匹配一个小写字母,\d{2,4}可以匹配2到4个数字。 在进行匹配时,可以使用捕获组来提取感兴趣的部分字符串。捕获组是通过在正则表达式模式中使用小括号来定义的,使用圆括号包裹的部分将被定义为一个捕获组。 除了preg_match函数,PHP还提供了许多其他与正则表达式相关的函数,如preg_replace、preg_split等,用于替换、拆分和其他正则表达式操作。 总结来说,PHP正则表达式是一种强大的字符串匹配工具,可以根据特定的模式来匹配和处理字符串。在应用中,我们可以利用它来实现各种字符串操作,如验证、替换、拆分等。 ### 回答3: 在PHP中,正则表达式是一种强大的工具,用于匹配和处理字符串。它可以用于各种字符串操作,例如验证输入,提取数据以及替换特定的字符串。 使用正则表达式的基本步骤是: 1. 定义正则表达式模式,它由特定的字符和元字符组成,用于匹配目标字符串。 2. 使用preg_match函数进行匹配,该函数用于判断目标字符串是否与正则表达式模式匹配。如果匹配成功,则返回1;否则返回0。 3. 可以使用 preg_match_all函数来匹配目标字符串中的所有模式出现。 4. 使用preg_replace函数实现字符串中的替换操作,将匹配到的部分替换为指定的字符串。 5. 使用preg_split函数按照正则表达式模式分割字符串。 例如,如果我们想匹配一个字符串中是否包含数字,可以使用正则表达式模式"/\d/",其中\d表示数字。代码如下: ```php $str = "Hello,123 world"; if(preg_match("/\d/", $str)){ echo "字符串中包含了数字"; } else { echo "字符串中不包含数字"; } ``` 输出结果为:字符串中包含了数字。 以上是关于PHP正则表达式匹配字符串的基本操作,根据具体的需求和匹配规则,可以使用更复杂的模式和函数来实现更精确的匹配和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值