php基础函数汇总表
字符串类:
nl2br($str) //把n转换为br
$str="<h1><i>1</i>这是一个标题</h1>";
htmlentiites($string); //把html的代码转换为实体显示 把中文字体也转换了,这是个不好的现象 <h1><i>1</i>è¿�æ�¯ä¸�个æ �é¢�</h1>
htmlspecialchars($str); //<h1><i>1</i>这是一个标题</h1>
strip_tags($str); //去掉html代码
get_magic_quotes_gpc() //返回1或0 与这个方法进行连用,如果系统开启了这个方法,则不要执行addslashes()方法了。否则执行
addslashes($str); //把 单引号 与双引号 $str 都加上转义字符,进行数据库的安全限制
$str1=addslashes($str); //1name:jame\'s这是一个标题
echo $str1;
echo "<br>";
echo stripslashes($str1); //1name:jame's这是一个标题
echo stripcslashes($str1); //1name:jame's这是一个标题
strtoLower($str) //转换为小写
strtoUpper($str) //转换为大写
ucfirst($str) //首字母转换为大写
ucwords($str) //每一个单词首字母都转换为大写
lcfirst($str) //使第一字母小写
str_repeat($str,length); 返回length个$str个字符串
$_arrStr="a,b,c,d";
explode(",",$_arrStr);
//使用这个函数,将使用逗号作为分隔条件,分隔$_arrStr字符串,得到数组。
//Array( [0] => a [1] => b [2] => c [3] => d)
implode(",",$arr) //得到字符串,使用逗号把$arr 连接成字符串。
join(",",$arr) //和implode()函数是一样的,加入
strlen($_arrStr) //返回字符串的长度
substr($str,0,10); //截取字符串
mb_substr($str,0,10,"utf-8"); //截取中文字
str_replace($str,0,10)
substr_replace($str,0,-4)
mb_substr_replace($str,0,10) //截取字符串函数
strrev($str) //字符反转
strstr($str,$find)//判断str是否包含find这个字符(str和find都是变量)
stristr($str,$find)//是否包含find这个变量,不区分大小写
strrchr($str,$find) //$find字符串中的最后一次出现
strpos($str,$find) //查找find是否在str中出现,如果有返回出现的位置,否则返回 false
stripos(str,$find) //和strpos这个函数是一样的,区别:不区分大小写
strrpos($str,$find) //从后面向前边寻找,找到返回其位置
echo lcg_value() //生成0-1之间的随机数
//时间
echo "今天:".date("Y-m-d H:i:s");
echo "<br>";
echo "前五天:".date("Y-m-d H:i:s",strtotime("-5 day"));
echo "<br>";
echo date("Y-m-d H:i:s",strtotime("+1 month"));
echo "<br>";
strtotime("+1 day");
strtotime("+1 day");
strtotime("+1 week")
strtotime("+2 month");
strtotime("+2 hours"); //加两个小时
//请输入你的php代码
// echo date("Y-m-d H:i:s",strtotime("-2 day")); //前两天
// echo date("Y-m-d H:i:s",strtotime("-1 week")); // 上个星期
// echo date("Y-m-d H:i:s",strtotime("-1 month")); //上个月
// echo date("Y-m-d H:i:s",strtotime("-1 hour")); //上一个小时
// echo date("Y-m-d H:i:s",time()-60); //上一份钟
//echo date("D"); //Wed
// echo date("t"); //月份中有多少天
//echo date("z"); //年份中第多少天
echo date("w"); //星期 星期中的第几天,数字表示 0星期天 3表示第三天
//var_dump(date("L")); //是否闰年
今天:2017-04-10 12:55:03
前五天:2017-04-05 12:55:03
前下一个月:2017-05-10 12:55:03
strtotime("2017-03-15 17:22:33");
date("Y-m-d H:i:s");
$timeChuo=strtotime("2017-02-15 17:22:33");
echo date("Y-m-d",$timeChuo-3600*24); //返回时间的前一天
D //表示星期几 Wed
d //这个月的第几天
j // 月份中的第几天,没有前导零
w //今天是这周的第几天 0(表示星期天)到 6(表示星期六)
z //今天是今年的第多少天
L //是否闰年
t //返回这个月的天数
//操作本地文件
file_get_contents("Path/a.css"); //得到a.css这个文件的内容
file_put_contents("Path/a.css",$content); //写文件
//写一个文件
$fp=fopen($path."a.txt","w");
fwrite($fp,$content);
fwrite($fp,$content2);
fclose($fp);
//读一个文件:
$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
打开model:
r
r+
w
w+
a
a+
b
这几种方式是可以进行组合 wb w
//计算两个文件的相对路径:
//方法:得到两个文件的绝对路径,然后进行 / 进行分割,得到两个不同的数组,
然后得到A文件和B文件array_diff_assoc() 通过这个函数得到两个数组不同的交集,并得到个数
循环一下,得到相对地址
计算出:A文件相当于B文件的相对路径
$a="/a/b/c/d/a.php";
$b="/a/b/1/2/b.php";
function fff($fileA,$fileB){
$path="";
$tempA=explode("/",$fileA);
$tempB=explode("/",$fileB);
$diff=array_diff_assoc($tempA,$tempB);
$diffSize=count($diff);
for($i=0;$i<$diffSize-1;$i++){
$path.="../";
}
$path .= implode('/', $diff); //implode()用于使用指定字符串连接数组元素,此处返回用'/'连接数组元素后的字符串
return $path;
}
echo fff($a,$b);
//解析url地址
$url=$_SERVER['REQUEST_URI'];
$url_arr=parse_url($url); //得到一个数组 两个key path 和 query
parse_str($url_arr['query'],$http); //$http 这个数组
unset($http['page']); //删除对应的参数
echo $url_arr["path"]."?".http_build_query($http);
$file=$_SERVER['SCRIPT_NAME'];
$file=$_SERVER['PHP_SELF'];
$file="http://www.looda.com/asp/ff.aspx?a=2134&b=33";
$temp = parse_url($file);
$path = $temp['path'];
//然后再借用pathinfo直接将扩展名取出
echo pathinfo($path,PATHINFO_EXTENSION)."<br>";
echo pathinfo($path,PATHINFO_FILENAME )."<br>";
echo pathinfo($path,PATHINFO_BASENAME)."<br>";
echo pathinfo($path,PATHINFO_DIRNAME)."<br>";
$temp = pathinfo($file,PATHINFO_EXTENSION);
//取出扩展名
$temp = explode("?",$temp);
echo $temp[0];
//在不使用临时变量的情况下,交换两个数的变量:
echo "<br>";
$a=3;
$b=9;
echo "原始a".$a."------b".$b;
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;
echo "原始 a:".$a."------b:".$b;
//读取一个目录
function readdir($dir){
$_dataArr=array();
if(is_dir($dir)){
$fp=opendir($dir);
while($file=readdir($fp)){
if($file!="." && $file!=".."){
$_dataArr[]=$file;
//filesize 文件大小
//文件扩展名 stristr($fileName,".")
//filetype 文件类型 文件 or 文件就爱
//filemtime 文件最后的编辑时间
}
}
}else{
return false;
}
}
dirname(__FILE__); 得到文件所在的路径
解析字符串类
class Parsert{
private $tpl;
//构造方法
function __construct($mtpl){
if(!$this->tpl=file_get_contents($mtpl)){
echo "ERROR: 模板文件读取错误";
exit;
}
}
//定义一个方法来解析普通变量,
//这里使用private 因为这里只在类里访问
private function parVal(){
// 这里使用正则表达式 preg_match() 来匹配,用preg_replace() 来替换
$pattern='/\{\$([a-zA-Z0-9_]+)\}/';
if(preg_match($pattern,$this->tpl)){
//解释一下 echo \$this->_vars['\\1']
//这里的\\1 指的是 正则表达式匹配后的第一个分组的数据
//这里的\\1 也可以用$1来替换为 echo \$this->_vars['$1']
$this->tpl=preg_replace($pattern,"<?php echo \$this->_vars['\\1']?>",$this->tpl);
}
}
//解析if语句 首先去判断有没有if语句,如果有
//那么就必须有结束语句,如果没有,就报错,并结束程序
/*
{if $变量} 变量的使用的方法
{else}
{/if}
*/
private function parif(){
$patternif='/\{if\s+\$([a-zA-Z0-9_]+)\}/';
$patternelse='/\{else\}/';
$patternendif='/\{\/if\}/';
if(preg_match($patternif,$this->tpl)){
//判断是否有结尾
if(preg_match($patternendif,$this->tpl)){
$this->tpl=preg_replace($patternif,"<?php if(\$this->_vars['\\1']){ ?>",$this->tpl);
//判断是否有else
if(preg_match($patternelse,$this->tpl)){
$this->tpl= preg_replace($patternelse,"<?php } else {?>",$this->tpl);
}
//解析结束if
$this->tpl=preg_replace($patternendif,"<?php }?>",$this->tpl);
}else{
echo "ERROR: if语句没有结束语句 ";
exit;
}
}
}
/*循环嵌套使用方法 */
private function pariff(){
$patternif='/\{iff \@([a-zA-Z\-\>]+)\}/';
$patternelse="/\{iffelse\}/";
$patternend="/\{\/iff\}/";
if(preg_match($patternif,$this->tpl)){
if(preg_match($patternend,$this->tpl)){
$this->tpl=preg_replace($patternif,"<?php if(\$$1){?>",$this->tpl);
$this->tpl=preg_replace($patternend,"<?php } ?>",$this->tpl);
if(preg_match($patternelse,$this->tpl)){
$this->tpl=preg_replace($patternelse,"<?php }else{ ?>",$this->tpl);
}
}else{
echo "Error: 内嵌式循环 iff 没有关闭";
exit;
}
}
}
//解析动态注释
private function parCommon(){
$pattern='/\{#\}(.*)\{\/#\}/';
//我是php注释,在网页中是看不到的,只有在php文件中才可以看到
if(preg_match($pattern,$this->tpl)){
$this->tpl=preg_replace($pattern,"<?php /*\\1*/ ?>",$this->tpl);
}
}
//解析foreach语句
private function parForeach(){
$patternForeach='/\{foreach \$([\w]+)\(\$([\w]+),\$([\w]+)\)\}/';
$patternEndForeach='/\{\/foreach\}/';
$f_val='/\{@([\w\-\>\+\$]+)\}/';
$fun_val='/\{@([\w\-\>]+)\s+function=(\"|\')([\w]+)\(\'([\w\-\#\+.@]*)\'\)(\"|\')\}/';
if(preg_match($patternForeach,$this->tpl)){
//php echo \$$1
if(preg_match($patternEndForeach,$this->tpl)){
$this->tpl=preg_replace($patternForeach,"<?php foreach(\$this->_vars['\\1'] as \$\\2=>\$\\3){ ?>",$this->tpl);
$this->tpl=preg_replace($f_val,"<?php echo \$$1; ?>",$this->tpl);
$this->tpl=preg_replace($patternEndForeach,"<?php } ?>",$this->tpl);
if(preg_match($fun_val,$this->tpl,$all)){
// print_r($all);
if($all[3]=="checkempty"){
$this->tpl=preg_replace($fun_val,"<?php if(\$$1==\"\"){echo \"$4\";}else{echo \$$1;} ?>",$this->tpl);
}else{
$this->tpl=preg_replace($fun_val,"<?php echo \$$1; ?>",$this->tpl);
}
}
}else{
echo "ERROR: 没有foreach关闭语句 ";
exit;
}
}
}
private function parFor(){
$partterFor='/\{for\s+\@([\w\-\>]+)\(\$([\w]+),\$([\w]+)\)\}/';
$partterelse='/\{else\}/';
$partterend='/\{\/for\}/';
$f_val='/\{@([\w\-\>\+\$]+)\}/';
if(preg_match($partterFor,$this->tpl)){
if(preg_match($partterend,$this->tpl)){
$this->tpl=preg_replace($partterFor,"<?php foreach(\$$1 as \$\\2=>\$\\3){ ?>",$this->tpl);
$this->tpl=preg_replace($partterend,"<?php } ?>",$this->tpl);
$this->tpl=preg_replace($f_val,"<?php echo \$$1; ?>",$this->tpl);
if(preg_match($partterelse,$this->tpl)){
$this->tpl=preg_replace($partterelse,"<?php }else{ ?>",$this->tpl);
}
}else{
echo "ERROR: for 循环没有关闭语句 ";
exit;
}
}
}
//解析include
private function parInclude(){
//$pattern='/\{\s*include\s+file=\"|\'([\w]+).([\w]+)\"|\'\s*\/\}/';
//$pattern='/\{\s*include\s+file=\"|\'(.*)\"|\'\s*\/\}/';
$pattern='/\{\s*include\s+file=(\"|\')(.*)(\"|\')\s*\/\}/';
if(preg_match($pattern,$this->tpl)){
preg_match($pattern,$this->tpl,$_file);
// print_r($_file);
$infile=$_file[2];
if(!file_exists($infile)){
echo "ERROR: $infile 引入的文件不存在";
exit;
}
$this->tpl=preg_replace($pattern,"<?php include '\\2' ;?>",$this->tpl);
}
}
//解析array数组
private function parArray(){
$pattern='/\{array\s+\$([a-z0-9A-Z\-\>]+)\(\$[a-z0-9A-Z]+,\$[a-z0-9A-Z]+\)\}/';
$patternend='/\{\/array\}/';
if(preg_match($pattern,$this->tpl)){
if(preg_match($patternend,$this->tpl)){
$patternval='/\{\#value\}/';
$patternval2='/\{\#key\}/';
$this->tpl=preg_replace($pattern,"<?php \$pa=\$this->_vars['\\1']; for(\$i=2;\$i<sizeof(\$this->_vars['\\1']);\$i++){ ?>",$this->tpl);
if(preg_match($patternval,$this->tpl)){
$this->tpl=preg_replace($patternval,"<?php echo \$pa[\$i]; ?>",$this->tpl);
$this->tpl=preg_replace($patternval2,"<?php echo \$i; ?>",$this->tpl);
}
$this->tpl=preg_replace($patternend,"<?php }?>",$this->tpl);
}else{
exit("没有array结束标签");
}
}
}
//解析系统变量
private function parConfig(){
$pattern='/<!--\$([\w]+)-->/';
if(preg_match($pattern,$this->tpl)){
$this->tpl=preg_replace($pattern,"<?php echo \$this->config['\\1']; ?>",$this->tpl);
}
}
public function common($parfile){
//解析普通变量
$this->parVal();
//解析if语句
$this->parif();
//解析内嵌式if
$this->pariff();
//解析php注释
$this->parCommon();
//解析For
$this->parFor();
//解析foreach
$this->parForeach();
//解析include
$this->parInclude();
//解析系统变量
$this->parConfig();
//解析数组
$this->parArray();
//在这里生成编译文件
if(!file_put_contents($parfile,$this->tpl)){
echo "ERROR:生成缓存文件出错";
exit;
}
}
//定义一些常用方法
private function checkfunction($bl,$fun,$view){
$string="";
if($fun=="checkempty"){
$string="<?php if(\$$bl==\"\"){echo \"$view\";}else{echo \$$bl;} ?>";
}else{
$string="<?php echo \$$bl ?>";
}
return $string;
}
}