易德轩网教学培训视频直播平台

使用论坛账号

 找回密码
登录
 立即注册

QQ登录

只需一步,快速开始

扫一扫,极速登录

搜索
查看: 1559|回复: 0

php常用函数详解大全(下)

[复制链接]
发表于 2019-10-8 23:28:56 | 显示全部楼层 |阅读模式
w1.jpg

PHP中函数其实是一个具有复杂逻辑的代码块,而这种代码块通常可以在很多地方重复使用。函数是使用了一种特殊的结构来将要重复使用的代码进行包裹,后期可以通过定义的函数名字来直接实现重复代码块的调用。

文件处理

文件属性

file_exists('1.php') 文件或目录是否存在

filesize() 取得文件大小

is_readable() 判断给定文件名是否可读

is_writable() 判断给定文件名是否可写

is_executable() 判断给定文件名是否可执行

filectime() 获取文件的创造时间

filemtime() 获取文件的修改时间

fileatime() 获取文件的访问时间

stat() 获取文件大部分属性值

解析目录

basename() 返回路径中的文件名部分

dirname() 返回目录

pathinfo() 返回目录名、基本名和扩展名的关联数组

遍历目录

opendir() 打开指定目录

readdir() 读取指定目录

closedir() 关闭指定目录

rewinddir() 倒回目录句柄

$dir_handle=opendir('.');

while($file=readdir($dir_handle))

{

echo filesize($file).'___'.$file.'<br>';

}

closedir($dir_handle);

建立和删除目录

mkdir() 创建目录

rmdir() 删除空目录

文件操作

fopen()

fclose()

fwrite() 写入文件

fputs() fwrite的别名

file_put_contents($文件名,$内容) 把内容存成文件

file_get_contents() 从文件读出内容

文件读取

fread()

stream_get_contents()  和 file_get_contents()一样,但需要先fopen()文件

fgets() 从文件指针中读取一行

feof() 测试文件指针是否到了文件结束的位置

fgetc() 从文件指针中读取字符

file()

readfile() 读入一个文件并写入到输出缓冲

ftell()返回文件指针的当前位置

fseek() 移动文件指针到指定的位置

rewind() 移动文件指针到文件的开头

flock() 文件锁定

copy() 复制文件

unlink() 删除文件

ftruncate() 将文件截断到指定的长度

rename() 重命名文件或目录

文件控制

chgrp

chmod ( string $filename , int $mode )

chown

保存读取文件

-----------把内容存成文件

$cache_file = fopen('f:\1.txt', 'w+');

fwrite($cache_file, $t);

-----------把内容存成文件

$s = "内容";

file_put_contents('f:/2.txt',$s);

-----------把文件内容读成字符串

$s = file_get_contents('f:/2.txt');

echo $s;

-----------把文件内容按行读成字符串

$handle = @fopen("f:/2.txt", "r");

if ($handle)

{

while (!feof($handle))

{

$buffer = fgets($handle, 4096);

echo $buffer.'<br>';

}

fclose($handle);

}

----------

session/cookie

setcookie("MyCookie[foo]", 'Testing 1', time()+3600)

session_start()

ini_set('session.cookie_lifetime',0); session对应cookie存活时间

ini_set('session.save_path', 'dir');

ini_set('session.save_path', '2;session');session分两级存放

ini_set('session.name','SNS');

客户端禁用Cookie

session.use_trans_sid = 1 开启url传递sessionId php.ini

session销毁

mysql

$link = mysql_connect('localhost','root','root') or die(mysql_errno());

mysql_select_db('test') or die (mysql_errno());

mysql_query('SET NAMES gbk');

$sql = "SELECT * FROM test LIMIT 0,20";

$result = mysql_query($sql) or die(mysql_errno());

while($msg = mysql_fetch_array($result)){

print_r($msg);

}

mysql_free_result($result);

mysql_close($link);

mysqli

查询

-------------------------------过程

$db_host="localhost";   //连接的服务器地址

$db_user="root";    //连接数据库的用户名

$db_psw="root";     //连接数据库的密码

$db_name="test"; //连接的数据库名称

$mysqli=mysqli_connect($db_host,$db_user,$db_psw,$db_name);

mysqli_query($mysqli,'SET NAMES utf8');

$query="select * from users";

$result=mysqli_query($mysqli,$query);

while($row =mysqli_fetch_array($result)) //循环输出结果集中的记录

{

echo ($row['id'])."<br>";

echo ($row['username'])."<br>";

echo ($row['password'])."<br>";

echo "<hr>";

}

mysqli_free_result($result);

mysqli_close($mysqli);

-------------------------------对象

$db_host="localhost";   //连接的服务器地址

$db_user="root";    //连接数据库的用户名

$db_psw="root";     //连接数据库的密码

$db_name="test"; //连接的数据库名称

$mysqli=new mysqli($db_host,$db_user,$db_psw,$db_name);

$mysqli->query('SET NAMES utf8');

$query="select * from users";

$result=$mysqli->query($query);

if ($result)

{

if($result->num_rows>0) //判断结果集中行的数目是否大于0

{

while($row =$result->fetch_array()) //循环输出结果集中的记录

{

echo ($row[0])."<br>";

echo ($row[1])."<br>";

echo ($row[2])."<br>";

echo "<hr>";

}

}

}

else

{

echo "查询失败";

}

$result->free();

$mysqli->close();

增、删、改

$mysqli=new mysqli("localhost","root","root","sunyang");//实例化mysqli

$query="delete from employee where emp_id=2";

$result=$mysqli->query($query);

if ($result){

echo "删除操作执行成功";

}else{

echo "删除操作执行失败";

}

$mysqli->close();

绑定结果

$mysqli=new mysqli("localhost","root","root","test");      //实例化mysqli

$query="select * from users";

$result=$mysqli->prepare($query);                 //进行预准备语句查询

$result->execute();                           //执行预准备语句

$result->bind_result($id,$username,$password);         //绑定结果

while ($result->fetch()) {

echo $id.'_';

echo $username.'_';

echo $password;

echo "<br>";

}

$result->close();                             //关闭预准备语句

$mysqli->close();                             //关闭连接

绑定参数

$mysqli=new mysqli("localhost","root","root","test");          //实例化mysqli

$query="insert into users (id, username, password)   values ('',?,?)";

$result=$mysqli->prepare($query);

$result->bind_param("ss",$username,$password);            //绑定参数 I:integer D:double S:string B:blob

$username='sy0807';

$password='employee7';

$result->execute();                               //执行预准备语句

$result->close();

$mysqli->close();

绑定参数、绑定结果

$mysqli=new mysqli("localhost","root","root","test");      //实例化mysqli

$query="select * from users where id < ?";

$result=$mysqli->prepare($query);

$result->bind_param("i",$id);                 //绑定参数

$id=10;

$result->execute();

$result->bind_result($id,$username,$password);         //绑定结果

while ($result->fetch()) {

echo $id."_";

echo $username."_";

echo $password;

echo "<br>";

}

$result->close();

$mysqli->close();

多条查询语句

$mysqli=new mysqli("localhost","root","root","test");          //实例化mysqli

$query = "select id from users ;";

$query .= "select id from test ";

if ($mysqli->multi_query($query)) {                   //执行多个查询

do {

if ($result = $mysqli->store_result()) {

while ($row = $result->fetch_row()) {

echo $row[0];

echo "<br>";

}

$result->close();

}

if ($mysqli->more_results()) {

echo ("-----------------<br>");                       //连个查询之间的分割线

}

} while ($mysqli->next_result());

}

$mysqli->close();//关闭连接

pdo

查询

$db = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');

$sql="SELECT * FROM users";

$result = $db->query($sql);

foreach ($result as $row)

{

var_dump($row);

}

$db = null;

增、删、改、事务开启

try

{

$db = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');

$db->beginTransaction();

$a = $db->exec("insert into users (id, username, password) values ('', 'Joe', 'Bloggs')");

if($a == false)

{

throw new Exception("sql1执行失败");

}

$b = $db->exec("insert into users (id, username, password,kkk) values ('', 'Joe', 'Bloggs')");

if($b == false)

{

throw new Exception("sql2执行失败");

}

$db->commit();

$db = null;

}

catch (Exception $ex)

{

echo $ex;

$db->rollback();

}

缓存

Memcache

.下载memcached, http://www.danga.com/memcached/ ; 2.解压,比如放在 D:\memcached-1.2.1 ; 3.DOS下输入‘D:\memcached-1.2.1\memcached.exe -d install’,进行安装(注意‘’不要输入); 4.再次输入‘D:\memcached-1.2.1\memcached.exe -d start’启动memcached。  注意:memcached以后会随机启动。这样memcached就已经安装完毕了。

$memcache = new Memcache;

$memcache->addServer('172.19.5.199',11211);

$memcache->addServer('172.19.5.13',11211);

//$memcache->connect('localhost', 11211) or die ("Could not connect");

//$version = $memcache->getVersion();

//echo "Server's version: ".$version;

$memcache->set('key3',array(1,2,3));

var_dump($memcache->get('key3'));

ob

ob_start()

$content = ob_get_contents();

ob_clean();

$cache_file = fopen('f:\1.html', 'w+');

fwrite($cache_file, $content);

页面静态化--------------------------------------

ob_start();

$static_file = '1.html';//静态页面

$php_file = basename(__FILE__);//当前动态页面

if (!file_exists($static_file) ||

((filemtime($static_file)+10) < time()) || //缓存固定时间

filemtime($php_file) > filemtime($static_file)) //源文件已修改

{

echo '静态页面示例';

echo 'erer';

$c = ob_get_contents();

ob_clean();

file_put_contents($static_file, $c);

}

$s = file_get_contents($static_file);

echo $s;

-------------------------------------------------

ob_implicit_flush($p)  $p:0:关闭 1:开启(每次输出后都自动刷新,而不再需要去调用flush())

ob_list_handlers 列出所有使用的输出句柄

output_add_rewrite_var

output_add_rewrite_var('var', 'value');

echo '<a href="file.php">link</a>';

输出:<a href="file.php?var=value">link</a>

output_reset_rewrite_vars

output_add_rewrite_var('var', 'value');

echo '<a href="file.php">link</a>';//输出:<a href="file.php?var=value">link</a>

ob_flush();

output_reset_rewrite_vars();

echo '<a href="file.php">link</a>';//输出:<a href="file.php">link</a>

伪静态

首先:

必须要空间支持 Rewrite 以及对站点目录中有 .htaccess 的文件解析,才有效.

如何让空间支持Rewrite 和 .htaccess 的文件解析呢 往下看

第一步:要找到apache安装目录下的httpd.cof文件,在里面找到

<Directory />

Options FollowSymLinks

AllowOverride none

</Directory>

把none改all,

第二步:找到以下内容:

#LoadModule rewrite_module modules/mod_rewrite.so

改为

LoadModule rewrite_module modules/mod_rewrite.so

第三步:保存重启apache。

ok。

其次是.htaccess的书写规则:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

#打开允许符号链接

Options FollowSymLinks

RewriteRule smarty/([0-9]+)/([0-9]+) smarty/index.php?id=$1&name=$2

</IfModule>

.htaccess加入以下内容

RewriteEngine On

RewriteBase /

RewriteRule ^(.*)list-id([0-9]+)\.html$ $1/company/search.php?sectorid2=$2

RewriteRule ^(.*)cominfo-([a-z0-9]+)\.html$ $1/member/index.php?uid=$2&type=cominfo

RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1/plus/list.php?typeid=$2&PageNo=$3

RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.lujin\.com$

RewriteCond %{HTTP_HOST} !^(www|bbs)\.lujin\.com$

RewriteRule ^/?$ /%{HTTP_HOST}

RewriteRule ^/([a-z0-9\-]+)\.lujin\.com/?$ /member/index.php?uid=$1 [L]

对上面的一些解释

RewriteRule ^(.*)list-id([0-9]+)\.html$ $1/company/search.php?sectorid2=$2

这条是把企业库的分类进行伪静态处理

原先假设访问地址为http://www.xxx.com/company/search.php?sectorid2=1

现在地址为http://www.xxx.com/list-id1.html

优点:1、伪静态处理加速搜索引擎收入

2、地址映射到根目录,增加权重,提高排名

序列化

__sleep()

__wakeup()

-----------------

$a = array("1"=>"a","2"=>"b","3"=>"c","4"=>"d");

$b = serialize($a);/*序列化*/

var_dump($b);

$f = unserialize($b);/*解析*/

var_dump($f);

---------------------

class S

{

public $t = 111;

public function t()

{

echo 't function';

}

}

$s = new S;

$t = serialize($s);

$e = unserialize($t);

echo $e->t();

echo $e->t;

--------------------

class S

{

public $id;

public $name;

public function f()

{

echo 'f function';

}

function __sleep()

{

$this->id = uniqid();

return array('id','name');

}

function __wakeup()

{

//$this->id = uniqid();

}

}

$s = new S();

$s->name = 'name';

$e = serialize($s);

$t = unserialize($e);

echo $t->id.'_',$t->name,' ';

echo $t->f();

----------------------------

class S

{

public $t = 111;

public function t()

{

echo 't function';

}

}

$s = new S;

$t = serialize($s);

$cache_file = fopen('f:/1.txt', 'w+');

fwrite($cache_file, $t);

/*

die;

$e = unserialize($t);

echo $e->t();

echo $e->t;

*/

$handle = @fopen("f:/1.txt", "r");

if ($handle)

{

while (!feof($handle))

{

$buffer = fgets($handle, 4096);

break;

}

fclose($handle);

}

$e = unserialize($buffer);

echo $e->t();

echo $e->t;

-----------------------------------------

w2.jpg

w3.jpg

微信号:紫龙

id:cf13728647549

网站名称:PHP知识

www.lxywzjs.com

w4.jpg

长按二维码

关注公众号

微信公众号

乐逍遥网站建设
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

回手机版|论坛帮助|易德轩网 ( 鲁ICP备20005112号-2 )|网站地图

GMT+8, 2024-11-21 21:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表