<?php
header("<meta http-equiv=Content-Type content=text/html; charset=utf-8 />");
$name="akhdajdja";
echo strlen($name);//这个函数是按照字符串的字节长度大小进行计算的
$name="akhdajdja中国人";
echo strlen($name);//这个按照每个字符所占字节的大小计算长度中文在utf8中占三个字节
echo mb_strlen($name,"utf-8");//这个是宽字节支持每个字符不管占多少长度都为一
//查找字符串位置函数
$name1="ehello";
$str="e";
echo "<br>";
echo strpos($name1,$str);//判断字符所在的位置 第一个参数是查找的字符串 第二个参数是要查找的字符
if(false!==strpos($name1,$str)){//===这里要求不但数值要相同而且数值的类型也要一致
echo "字符里面已发现";
}
else{
echo "未发现字符";
}
echo "<br>";
echo isset($aaa);
$aaa="aaa";
if(isset($aaa)){
echo "aaa";
}
else{
echo "bbb";
}
echo "<br>";
//字符串替换函数这个是不忽略大小写
$str="涛jjjjj";
$name="涛";
$restr="***";
echo str_replace($name,$restr,$str);
echo $str=str_replace($name,$restr,$str);
echo "<br>";
//字符串替换函数这个是忽略大小写ignore
$str="涛JJJJJJjjjj";
$name="涛j";
$restr="**";
echo str_ireplace($name,$restr,$str);
echo "<br>";
echo strstr($str,"J");//打印匹配J后面的字符
echo "<br>";
echo stristr($str,"j");//忽略大小写
//获取文件的后缀名
$file="a.jpg.exe";
$str=strstr($file,".");
$str=strrchr($file,'.');//最右面出现.后面的内容
$str=substr($file,strrpos($file,'.'));
$tmp=explode($file,'.');
echo array_pop($tmp);
/*
http://www.sina.com/xxx.php
分析出后缀名是php
*/
$url="http://www.sina.com/xxx.php?id=3";
print_r(pathinfo($url));
pathinfo($file);
echo "<br>";
echo "<br>";
$var = 'ABCDEFGH:/MNRPQR/';
$resub="bob";
echo "Original: $var<hr />\n";
//替换全部
echo substr_replace($var,$resub,0);//可以根据字符串的位置进行替换
echo "<br>";
echo substr_replace($var,$resub,10,-1);
echo "<br>";
echo substr_replace($var,$resub,10,6);//这个会把后边的/截取掉 应该为10-- -1才能正确的截取
echo "<br>";
echo substr_replace($var,$resub,10,-1);
echo "<br>";
echo substr_replace($var,$resub,-7,-1);
//这个函数在截取的时候不能按照10-15来截取 并且截取的时候是从0开始计数的 右边也是从0开始计数的
//截取子字符串的函数
$str="hehejjjlll";
//这个函数有三个参数第一个是截取的字符串 开始位置 和 长度
echo substr($str,0); //如果参数不说明截至结尾
echo "<br>";
//第二个参数也可以是负数如果是负数则就往前数
echo substr($str,-6);
echo "<br>";
//第三个参数为正数则代表为截取的长度
echo substr($str,-6,2);
echo "<br>";
//第三个参数为负数 则代表截取的结束位置
echo substr($str,0,-6);
echo "<br>";
//注意起始位置应在结束位置左侧
//str_split 把$str 按照len长度进行分割返回数组
$str="1234567890";
$array=str_split(strrev($str),3);//1,234,567,890 strrev 字符串的反转函数
print_r($array);
echo "<br>";
//explode implode
//implode是把数组合并成字符串
echo "aaa";
echo $array=implode(',',$array);
echo "<br>";
//explode这个是把字符串分割成数组
$arr=explode(',',$array);
print_r($arr);
//空白处理函数
//trim可以处理两端的空白字符 或指定字符 注意处理两端
echo "~".$username=" 张三 "."~";
echo "~".trim($username)."~";
$cont="hehhe...hhe....";
echo "<br>";
echo trim($cont,'.');
//用trim过滤多个指定字符
$cont="!...aaaahelloskjs..!";
echo trim($cont,'!.')."s<br>";
//过滤英文字母也可以指定列表
$con="bb我又可以玩了啊aaaa.aaaaaaaaaaaaaaasdada";
echo "<br>".trim($con,'a..z');
//chunk_split 把字符串指定长度加入标记 隔几个长度加一个标识符
$num="1234567890";
$num=strrev($num);
echo $num=chunk_split($num,3,',');
echo trim($num,',');
//转义函数与sql攻击addslashes()字符转义函数
$username='aaaaaa';//在提交的时候对提交的数据进行转义 可以转移‘ "" \ null
//反转义函数stripsslashes在使用addslashes请注意系统有一个魔术引号的选项 如过选项盖起则会把$_post $_GET $_COOKIE $_SESSION 自动转义 php。50已经关闭默认转义
//如果魔术引号开启,¥——post过来的值自动转移 但是我们不知道魔术引号已开启还手动转义了一次
//如何解决 如果开启则不手动转义addslashes 如没开启在使用
//如何判断当前魔术引号开没开启 这个函数是看看魔术引号是否开启 get_magic_quotes_gpc()
if(get_magic_quotes_gpc()){
echo "魔术引号已经开启";}
else{
echo "魔术引号为开启我需要手动转移";
$username=$_GET['name'];
$sql="select * from $username";
echo addslashes($sql);
}
/*
如果用户发布的内容直接显示在页面上 那么用户可能发表带有html代码甚至js代码的内容当用户浏览内容时 也有可能到来攻击
xss攻击用html实体转义
用htmlspecialchars吧重要的html转成实体
*/
$str="<script type=\"text/javascript\">alert('buxingle')</script>";
echo htmlspecialchars($str);
//encode 编码
//decode解码
//htmlspecialchars_decode把实体在转成html代码
echo "<br>";
echo $str='<h1>大标题</h1>';
echo htmlspecialchars_decode($str);
//练习
echo "<br>";
$str="abcdef";//取出第一个字母并打印
echo substr($str,0,1);
//===是什么是举出一个==是真但是===是假的例子
echo "<br>";
$hello="ehello";
$search="e";
echo strpos($hello,$search);
if(false!==strpos($hello,$search)){
echo "找到了";
}
else{
echo"未找到";
}