《PHP和MySQL WEB开发》第四章笔记

第四章:字符串操作与正则表达式

<?
/*第四章 字符串操作与正则表达式*/
/*4.1创建一个智能表单邮件*/
echo "<a href=\"feedback.html\">点击此处进入该页面</a>";
echo "发送失败了,配置问题。";




/*字符串的格式化
chop();ltrim();trim();rtrim();
*/


$a="   111  <55>";
$b="   111  <55> ";
echo $a;
echo "<br />这是末尾没有空格的格式化之后是这样".trim($a,"<55>");//注:只能去掉开头和结尾的东西
echo "<br />这是末尾有空格的格式化之后是这样".trim($b,"<55>");//注:只能去掉开头和结尾的东西,有空格就不管用了
//ltrim();只去掉左边
//rtrim();只去掉左边,chop()为rtrim()的别名


/*4.2.2格式化字符串以便于显示nl2br()*/
$name="Kevin";
$mail="436081860@qq.com";
$feedback="very good";
$mailcontent=$name."\n".$mail."\n".$feedback."\n";
echo $mailcontent;
echo nl2br($mailcontent);


$c=array(1,2);
/*print($c);//不能打印数组*/
$d=20;
//print($e);
echo (print($d));
//echo $e;
//print($e);


/*printf和sprintf*/
$e=26.32999;
echo "<br />这本书的价格是¥$e"."。<br />";
printf("这本书的价格是¥%s。<br />",$e);
printf("%%这本书的价格为¥%.2f<br />",$e);
printf("打印前面3个空格左对齐的第三个参数保留三位小数点:%3\$'3 6.3f",$a,$b,$e);
printf("打印前面3个空格左对齐的第三个参数保留三位小数点:%3\$'6-10.3f",$a,$b,$e);//向左靠齐时才会填充3,有些type没搞明白s字符串 f双精度


/*字符串的大小写*/
$f="hello,world!I'm a new soul!";
echo "<br />".strtoupper($f)."<br>".strtolower($f)."<br>".ucfirst($f)."<br>".ucwords($f)."<br>";
/*奇怪的是加了中文英文逗号的,竟然没有大写?*/


/*格式化字符串以便于储存*/
$g="\"哈哈!\"";
echo $g."<br />";
echo addslashes($g);




/*4.3使用函数链接和分割字符串*/
/*4.3.1explode(),implode(),join()*/
//print_r($email);
$email="436081860@qqlUhao.com";
$email_array=explode('@',$email);
//print_r($email_array); 
if(strtolower($email_array[1])=='qqluhao.com'){
	echo "1";
	}else{
		echo "0";
		}
/*将数组的元素组成新的字符串join()是implode()函数的别名*/
$email_array[3]="3";
$new_email_array=implode('@',$email_array);
echo strtolower($new_email_array);
$new_email_array2=join('@',$email_array);
echo $new_email_array2;
echo "<br />";
/*4.3.2使用strtok函数*/
$string = "abcd efgh igkelmn opeq ers e  e t"; 
echo "$string<br />";
$str=explode("e",$string);
foreach($str as $v){
	echo "($v)";
	}
echo "-------------<br />";


$string2 = "rrrrrdrr rrrrbrbrbrbbrbrb"; 
$str2 = strtok($string2, " d"); 
$n=1; 
while ($str2 !== false) { 
echo "($str2)"; 
$str2 = strtok("r"); 
} 
echo "-------------<br />";


//上面的意思是先把string2从左到右读,碰到的第一个分割字符(d)就停止,后面的循环是按照(r)来切割的。
$string3="aaaaaaabcbcbcbcbbcbddddddod";
$str3=strtok($string3,"bcdef");//第一次切,实际上只执行了b
while($str3!==false){
	echo "($str3)";
	$str3=strtok("o");//分割后面的o,结果应该是三个括号
		}


//使用for来遍历
echo "<br>";
$string4="aaaaobbbboccccoddddo";
for($i=strtok($string4,"o");$i!==false;$i=strtok("o")){
	echo "($i)";
	}
echo "<br />";
//使用for来遍历string3【推荐用法】
for($i=strtok($string3,"bcdef");$i!==false;$i=strtok("o")){
	echo "($i)";
	}




/*使用substr()函数*/
$test="Your customer service is excellent.";
echo substr($test,1,-2);//第三个元素如果为正数就是长度,如果为负数,就是从末尾数的数值。


/*字符串的比较*/
$h="abcdefg";
$i="Abcdefg";
$j="abc";
$k="123456";
$l="23456";
echo "<br />";
echo strcmp($h,$i);//比较最严格
echo strcmp($h,$j);
echo strcasecmp($h,$i);//忽略大小写
echo strcasecmp($k,$l);
echo strnatcmp($h,$l);//按照自然排序
echo strnatcmp($k,$l);


/*字符串的长度*/
$m="howroad";
echo "<br />howroad的长度为".strlen($m);//一般的作用就是来判断


/*字符串的匹配和替换*/
$teststr="it's very good.i very like it.i want BUY more.BUY moremore";
echo (strstr($teststr,"good") ? "有" :"无") ;
echo (strstr($teststr,"buy") ? "有" :"无") ;
echo (stristr($teststr,"buy") ? "有" :"无") ;
echo strrchr($teststr,"BUY");


/*查找字符串的位置*/
echo strpos($teststr,"good");
echo strpos($teststr,"o");
echo strpos($teststr,"o",12);
echo "<br />".strrpos($teststr,"o",12);


//假如搜索不到
echo @strpos($testpos,'aaaaa');
echo $php_errormsg;
//对比两个判断
if(strstr($teststr,'aaaaa')==0){echo "不存在";}
if(strstr($teststr,'i')==0){echo "存在";}
//有漏洞,应使用恒等于
if(strstr($teststr,'aaaaa')===false){echo "不存在";}
if(strstr($teststr,'i')==0){echo "存在";}


/*替换*/
/*
str_replace();
substr_replace();
*/
$offset=array("fuck","bitch","dick","cock");
$teststr="you son of bitch,fuck you ,you are dick!";
print_r(str_replace($offset,'******',$teststr,$i));//哈哈哈哈哈成功
echo $i;//显示一共替换了几处
echo substr_replace($teststr,"(没有全部替换)",0,-1);
echo substr_replace($teststr,"(全部替换了)",0,10000);


/*4.6正则表达式*/
//正则表达式是用来检索、替换那些符合某个模式(规则)的文本。
/*4.6.2*/
/*
[a-z][A-Z][a-zA-Z][^a-z][aeiou]
*/
echo(preg_match('/[a-z]$|[0-9]$/',"1o1")==true? "符合" : "不符合");


/*4.6.3重复*/
//*表示 这个模式可以被重复0或者更多次
//+表示 这个模式可以被重复1或者更多次




/*4.6.4子表达式*/
//类似于这种(very )*large
//for example ^bob,com$,^[a-z]$,




/*4.6.7分支*/
//| means or
//for example com|net|cn




/*4.6.8匹配特殊字符*/
//实例
echo "\\ <br />";
$ii="\$";
echo(preg_match("/[\\$]/",$ii)==true?"符合":"不符合");
//in the 正则表达式,双引号之中的特殊字符需要三个反斜杠\\\




/*4.6.9特殊字符一览表*/


/*4.6.10在智能表单中的应用*/
//使用正则表达式对电子邮箱中的地址标准格式进行编码
//^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-]+$




/*4.7用正则表达式来查找字符串(这是正则表达式的主要应用)*/


$email="436081860@qq.com";
echo "<br />";
if(preg_match('/^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/',$email)==true){
	echo "符合格式";
	}else{
		echo "不符合格式";
		}
/*
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃★★★★★特大喜讯★★★★                       ┃
┃本单元所学的正则表达式在PHP更新到5.3之后就不建议使用了!            ┃
┃要重新学习PCRE格式比较好,MLGBD!                               ┃
┃http://php.net/manual/zh/book.pcre.php                      ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
1.PCRE 函数需要模式以分隔符闭合。
2.不像POSIX,PCRE 扩展没有专门用于大小写不敏感匹配的函数。取而代之的是,支持使用i (PCRE_CASELESS) 模式修饰
符完成同样的工作。 其他模式修饰符同样可用于改变匹配策略。
3.POSIX 函数从最左面开始寻找最长的匹配,但是 PCRE 在第一个合法匹配后停止。如果字符串 不匹配这没有什么区别,但
是如果匹配,两者在结果和速度上都会有差别。 为了说明这个不同, 考虑下面的例子(来自Jeffrey Friedl 的《精通正则
表达式》一书)。 使用模式 one(self)?(selfsufficient)? 在字符串oneselfsufficient 上匹配,PCRE 会匹配到o
neself,但是使用 POSIX,结果将是整个字符串 oneselfsufficient。 两个子串都匹配原始字符串,但是 POSIX 将 最
长的作为结果。
*/
//echo phpinfo();是5.5版本的。。。


//补充正则表达式{8}标识循环8次


?>



<html>
<head>
<title>Bob's Auto Parts - Customer FeedBack</title></head>
<body>
<h1>Customer Feedback</h1>
<h2>Please tell us What you think.</h2>
<form method="post" name="Feedbackform" action="processfeedback.php">
Your name:<br />
<input name="name" /><br />
Your Email address:<br />
<input name="email" /><br />
Your feedback:<br />
<textarea name="feedback" rows="8" cols="40" wrap="virtual" /></textarea><br />
<input type="submit" name="submit" value="Send feedback" />

</form>
</body>
</html>

<?
$name=$_POST['name'];
$email=$_POST['email'];
$feedback=trim($_POST['feedback'],"222");
/*email的配置*/
//以上代码没有正确运行,应该是php配置问题

$toaddress="kknn2@vip.qq.com";
$mailcontent=$name.$email.$feedback;
$subject="Feedback from website.";
$fromaddress="From:436081860@qq.com";
//mail($toaddress,$subject,$mailcontent,$fromaddress);
echo "Your feedback has been sent.";
//以上代码没有正确运行,应该是php配置问题
echo "$name $email $feedback";










?>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值