php知识点

 

 

 

php 五种生成数组json,split ,explode;   range,array_chunkphp

 

面向对象html

http://www.javashuo.com/article/p-gvfiogut-hy.htmlnode

Redis  也是把数据存在缓存,但他会周期性的把更新的数据写入磁盘mysql

经常使用函数(都支持push/pop、add/remove),程序员

数据类型string(字符串)redis

list(链表)sql

set(集合)数据库

zset(sorted set --有序集合)json

hashs(哈希类型))数组

Mogodb  经常使用函数,做用,性质  

NosqlMogodb,redis memcached

Memcache 做用 性质

经过缓存数据库查询的结果,减小数据库访问次数,以提升动态Web应用的速度、提升可扩展性。 它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。

Mysql:innadb myisam区别 索引 ,

主键:不含业务逻辑,自增

MySQL存储引擎InnoDB与Myisam的六大区别

主键:不含业务逻辑,自增

索引

索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列。若是要按姓查找特定职员,与必须搜索表中的全部行相比,索引会帮助您更快地得到该信息。
索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引提供指向存储在表的指定列中的数据值的指针,而后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很类似:它搜索索引以找到特定值,而后顺指针找到包含该值的行。 在数据库关系图中,您能够在选定表的“索引/键”属性页中建立、编辑或删除每一个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。
能够基于数据库表中的单列或多列建立索引。多列索引使您能够区分其中一列可能有相同值的行。 若是常常同时搜索两列或多列或按两列或多列排序时,索引也颇有帮助。例如,若是常常在同一查询中为姓和名两列设置判据,那么在这两列上建立多列索引将颇有意义。 肯定索引的有效性: 检查查询的 WHERE 和 JOIN 子句。在任一子句中包括的每一列都是索引能够选择的对象。 对新索引进行试验以检查它对运行查询性能的影响。 考虑已在表上建立的索引数量。最好避免在单个表上有不少索引。 检查已在表上建立的索引的定义。最好避免包含共享列的重叠索引。 检查某列中惟一数据值的数量,并将该数量与表中的行数进行比较。比较的结果就是该列的可选择性,这有助于肯定该列是否适合创建索引,若是适合,肯定索引的类型。

创建索引的优势:
1.大大加快数据的检索速度;
2.建立惟一性索引,保证数据库表中每一行数据的惟一性;
3.加速表和表之间的链接;
4.在使用分组和排序子句进行数据检索时,能够显著减小查询中分组和排序的时间。

索引类型:
根据数据库的功能,能够在数据库设计器中建立四种索引:惟一索引、非惟一索引、主键索引和汇集索引。 尽管惟一索引有助于定位信息,但为得到最佳性能结果,建议改用主键或惟一约束。

惟一索引:
惟一索引是不容许其中任何两行具备相同索引值的索引。 当现有数据中存在重复的键值时,大多数数据库不容许将新建立的惟一索引与表一块儿保存。数据库还可能防止添加将在表中建立重复键值的新数据。例如,若是在 employee 表中职员的姓 (lname) 上建立了惟一索引,则任何两个员工都不能同姓。

非惟一索引:
非惟一索引是相对惟一索引,容许其中任何两行具备相同索引值的索引。 当现有数据中存在重复的键值时,数据库是容许将新建立的索引与表一块儿保存。这时数据库不能防止添加将在表中建立重复键值的新数据。

主键索引:
数据库表常常有一列或列组合,其值惟一标识表中的每一行。该列称为表的主键。 在数据库关系图中为表定义主键将自动建立主键索引,主键索引是惟一索引的特定类型。该索引要求主键中的每一个值都惟一。当在查询中使用主键索引时,它还容许对数据的快速访问。

汇集索引(也叫聚簇索引):
在汇集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个汇集索引。 若是某索引不是汇集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非汇集索引相比,汇集索引一般提供更快的数据访问速度。

https://www.runoob.com/w3cnote/mysql-different-nnodb-myisam.html (详细)

MyISAM存储: 若是表对事务要求不高,同时是以查询和添加为主的,咱们考虑使用myisam存储引擎,好比bbs 中的 发帖表,回复表,还有批量添加MyISAM效率高

INNODB 存储: 对事务要求高,保存的数据都是重要数据,咱们建议使用INNODB,好比订单表,帐号表。

1. 事务安全(MyISAM不支持事务,INNODB支持事务)

2. 外键 MyISAM 不支持外键, INNODB支持外键. 

3. 锁机制(MyISAM时表锁,innodb是行锁)

4. 查询和添加速度(MyISAM批量插入速度快)

5. 支持全文索引(MyISAM支持全文索引,INNODB不支持全文索引)

6.MyISAM内存空间使用率比InnoDB低

Memory 存储,好比咱们数据变化频繁,不须要入库,同时又频繁的查询和修改,咱们考虑使用memory, 速度极快. (若是mysql重启的话,数据就不存在了)

Myisam注意事项
若是你的数据库的存储引擎是myisam,请必定记住要定时进行碎片整理

举例说明:

create table test100(id int unsigned ,name varchar(32))engine=myisam;

insert into test100 values(1,'aaaaa');

insert into test100 values(2,'bbbb');

insert into test100 values(3,'ccccc');

insert into test100 select id,name from test100;
咱们应该定义对myisam进行整理

          optimize table test100;

 

1.inner join(内链接),在两张表进行链接查询时,只保留两张表中彻底匹配的结果集。

 2.left join,在两张表进行链接查询时,会返回左表全部的行,即便在右表中没有匹配的记录。

PHP的文件操做经常使用函数

 

PHP文件操做

1 得到文件名:
basename — 返回路径中的文件名部分

给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。若是文件名是以 suffix 结束的,那这一部分也会被去掉。

string basename ( string $path [, string $suffix ] )

$path = "/home/cate/index/index2.php";
$file = basename($path);
echo $file.'<br>'; //index2.php

$file2 = basename($path,'.php');
echo $file2;    //index2

$file3 = basename($path,'2.php');
echo $file2;    //index

2 得到目录名

dirname — 返回路径中的目录部分

string dirname ( string $path )

给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。

echo dirname(__FILE__);

__FILE__指向当前文件所在的路径 等同于 getcwd();

3 获得路径关联数组

pathinfo — 返回文件路径的信息

pathinfo() 返回一个关联数组包含有 path 的信息。包括如下的数组单元:dirnamebasename 和 extension

能够经过参数 options 指定要返回哪些单元。它们包括:PATHINFO_DIRNAMEPATHINFO_BASENAME 和PATHINFO_EXTENSION。默认是返回所有的单元。若是不是要求取得全部单元,则本函数返回字符串。

 

 

<?php
$path_parts = pathinfo("/home/cate/index.action.html");

// /home/cate   文件目录
echo $path_parts["dirname"] . "<br/>";          

//  index.action.html  文件名
echo $path_parts["basename"] . "<br/>";         

//  html        扩展名
echo $path_parts["extension"] . "<br/>";

//直接获取扩展名       
echo pathinfo("/home/cate/index.action.html", PATHINFO_EXTENSION);  

4 fopen — 打开文件或者 URL

resource fopen ( string $filename , string $mode [, bool $use_include_path [, resource $zcontext ]] )

'r'

只读方式打开,将文件指针指向文件头。

'r+'

读写方式打开,将文件指针指向文件头。

'w'

写入方式打开,将文件指针指向文件头并将文件大小截为零。若是文件不存在则尝试建立之。

'w+'

读写方式打开,将文件指针指向文件头并将文件大小截为零。若是文件不存在则尝试建立之。

'a'

写入方式打开,将文件指针指向文件末尾。若是文件不存在则尝试建立之。

'a+'

读写方式打开,将文件指针指向文件末尾。若是文件不存在则尝试建立之。

'x'

建立并以写入方式打开,将文件指针指向文件头。若是文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。若是文件不存在则尝试建立之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及之后的版本所支持,仅能用于本地文件。

'x+'

建立并以读写方式打开,将文件指针指向文件头。若是文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。若是文件不存在则尝试建立之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及之后的版本所支持,仅能用于本地文件。

<?php
    $handle = fopen("doc.txt", "r");
    var_dump($handle);

D:\wamp\www\test\jsontest.php:3:resource(3stream)

<?php
    $file = fopen('newtxt.txt','w')or die('没法打开文件');//不存在则自动建立
    $data = 'you are a coder!';
    fwrite($file,$data);
    $data = 'you are a MAN!';
    fwrite($file,$data);
    fclose($file);

 

 

 

5  fstat — 经过已打开的文件指针取得文件信息

array fstat ( resource $handle )

获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数类似,除了它是做用于已打开的文件指针而不是文件名。

返回一个数组具备该文件的统计信息,该数组的格式详细说明于手册中 stat() 页面里。

<?php

// 打开文件
$fp = fopen("doc.txt", "r");

// 取得统计信息
$fstat = fstat($fp);

// 关闭文件
fclose($fp);
// 只显示关联数组部分
//print_r(array_slice($fstat, 13)); 


print_r($fstat); //获取一个文件信息数组包括索引和关联数组

array_slice — 从数组中取出一段 返回数组

array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )

array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。

若是 offset 非负,则序列将从 array 中的此偏移量开始。若是 offset 为负,则序列将从 array 中距离末端这么远的地方开始。

若是给出了 length 而且为正,则序列中将具备这么多的单元。若是给出了 length 而且为负,则序列将终止在距离数组末端这么远的地方。若是省略,则序列将从 offset 开始一直到 array 的末端。

<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2);      // returns "c", "d", and "e"
$output = array_slice($input, -2, 1);  // returns "d"
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));

 

Array

 

(

 

[0] => c

 

[1] => d

 

)

 

Array

 

(

 

[2] => c

 

[3] => d

 

)

 

 

 

6 filesize — 取得文件大小

int filesize ( string $filename )

返回文件大小的字节数,若是出错返回 FALSE 并生成一条 E_WARNING 级的错误。

<?php
$filename = 'doc.txt';
echo $filename.':'.filesize($filename).'bytes';

doc.txt:46bytes

7.disk_free_space — 返回目录中的可用空间

float disk_free_space ( string $directory )

给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。

<?php
echo disk_free_space("C:").'<br/>';
echo disk_free_space("D:").'<br/>';
echo disk_free_space("/");

71001600000
186459181056

disk_total_space — 返回一个目录的磁盘总大小

8 fileatime — 取得文件的上次访问时间

filectime — 取得文件的 inode 修改时间

filemtime — 取得文件修改时间

9 file — 把整个文件读入一个数组中

<?php
$myfile = 'doc.txt';
$lines = file($myfile);

for($i=0,$len = count($lines);$i<$len;$i++){
    echo mb_convert_encoding($lines[$i], "UTF-8", "GBK").'<br/>';
}

我是一个新手程序员,须要慢慢努力才能有所收获1! 
我是一个新手程序员,须要慢慢努力才能有所收获2! 
我是一个新手程序员,须要慢慢努力才能有所收获3! 
我是一个新手程序员,须要慢慢努力才能有所收获4! 
我是一个新手程序员,须要慢慢努力才能有所收获5! 
我是一个新手程序员,须要慢慢努力才能有所收获6!

mb_convert_encoding($lines[$i], "UTF-8", "GBK")

将每一行原来的WINDOWS下GBK格式的数据$lines[$i]转换为UTF-8格式

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

<?php
$myfile = 'doc.txt';
$encoding = mb_detect_encoding($myfile, array('GBK','UTF-16','UCS-2','UTF-8','BIG5','ASCII'));
echo $encoding;

CP936 即GBK

mb_detect_encoding — 侦测字符集  第一个为文件或者路径 第二个为可能的字符集

10 fgets — 从文件指针中读取一行

string fgets ( int $handle [, int $length ] )

从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后中止(看先碰到那一种状况)。若是没有指定 length,则默认为 1K,或者说 1024 字节。

出错时返回 FALSE

<?php
$handle = fopen('doc.txt','r');
if ($handle){
    while (!feof($handle)){
        $data[] = fgets($handle,1024);
    }
    print_r($data);
    fclose($handle);
}

 

Array

(

    [0] => 我是一个新手程序员,须要慢慢努力才能有所收获1!

 

    [1] => 我是一个新手程序员,须要慢慢努力才能有所收获2!

 

    [2] => 我是一个新手程序员,须要慢慢努力才能有所收获3!

 

    [3] => 我是一个新手程序员,须要慢慢努力才能有所收获4!

 

    [4] => 我是一个新手程序员,须要慢慢努力才能有所收获5!

 

    [5] => 我是一个新手程序员,须要慢慢努力才能有所收获6!

)

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

若是服务器没有关闭由 fsockopen() 所打开的链接,feof() 会一直等待直到超时而返回 TRUE。默认的超时限制是 60 秒,可使用 stream_set_timeout() 来改变这个值。

fclose — 关闭一个已打开的文件指针

14 fgetss -- 从文件指针中读取一行并过滤掉 HTML 标记
和 fgets() 相同,只除了 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。

   能够用可选的第三个参数指定哪些标记不被去掉

file_exists — 检查文件或目录是否存在

bool file_exists ( string $filename )

若是由 filename 指定的文件或目录存在则返回 TRUE,不然返回 FALSE

 15 file_put_contents — 将一个字符串写入文件

int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )

和依次调用 fopen()fwrite() 以及 fclose() 功能同样。

filename 要写入数据的文件名
data  要写入的数据。类型能够是 string,array(但不能为多维数组),或者是 stream 资源
flags  可选,规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH:检查 filename 副本的内置路径
FILE_APPEND:在文件末尾以追加的方式写入数据
LOCK_EX:对文件上锁
context  可选,Context是一组选项,能够经过它修改文本属性

<?php
echo file_put_contents('doc.txt','你是一个程序员7',FILE_APPEND);

返回字节数22

若是文件不存在,则建立文件,至关于fopen()函数行为。

若是文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以免。

file_put_contents 函数可安全用于二进制对象。

若是对于肯定已经存在的文件,最好进行一个判断

if (file_exists('test.txt')) {
    file_put_contents('test.txt','contents' );
}

 

PHP文件上传

 

 

PHP经常使用数组(Array)函数整理

整理了一份PHP开发中数组操做大全,包含有数组操做的基本函数、数组的分段和填充、数组与栈、数组与列队、回调函数、排序、计算、其余的数组函数等。

1、数组操做的基本函数

array_rand($arr,2);//从数组中随机取出两个值
range(12,16);//建立一个数组,值为12,13,14,15,16
$mt=mt_rand(5,15);//5-15之间的一个随机数
$s=rand(5,15);//5-15之间的一个随机数
$mt=mt_rand(5,15);//5-15之间的一个随机数
$mts=mt_rand();//5-15之间的一个随机数
$ss=rand();//512175390一个随机数

数组的键名和值

array_values($arr);  得到数组的值

array_reverse($arr,TRUE);  返回一个单元顺序与原数组相反的数组,若是第二个参数为TRUE保留原来的键名
array_keys($arr);  得到数组的键名

array_key_exists("apple",$arr);  检索给定的键名是否存在数组中

array_flip($arr);  数组中的值与键名互换(若是有重复前面的会被后面的覆盖)
in_array("apple",$arr);  在数组中检索apple
array_search("apple",$arr);  在数组中检索apple ,若是存在返回键名

isset($arr[apple]):   检索给定的键名是否存在数组中

数组的内部指针

current($arr);  返回数组中的当前单元
pos($arr);  返回数组中的当前单元
key($arr);  返回数组中当前单元的键名
prev($arr);  将数组中的内部指针倒回一位
next($arr);  将数组中的内部指针向前移动一位
end($arr);  将数组中的内部指针指向最后一个单元
reset($arr;  将数组中的内部指针指向第一个单元
each($arr);  将返回数组当前元素的一个键名/值的构造数组,并使数组指针向前移动一位
list($key,$value)=each($arr);  得到数组当前元素的键名和值

数组和变量之间的转换

extract($arr);用于把数组中的元素转换成变量导入到当前文件中,键名看成变量名,值做为变量值
注:(第二个参数很重要,能够看手册使用)使用方法 echo $a;
compact(var1,var2,var3);用给定的变量名建立一个数组

取值替换

array_slice($arr,0,3);  //从0开始取三个数组值

array_splice($arr1,0,3,$arr2);  //从零开始从$arr1取三个数组值,并用$arr2替换掉 【取N值用新数组替换】

分组

$arr=range(1,12)

$new=array_chunk($arr,3,TRUE);  能够将一个数组分割成多个,TRUE为保留原数组的键名//将一维数组分割成每一个包含三个的二维数组

会生成一个二维数组

补齐填充

array_pad($arr,5,'x');  将一个数组填补到制定5个长度

3、数组与栈

array_push($arr,"apple","pear");  将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
array_pop($arr);  将数组栈的最后一个元素弹出(出栈)

4、数组与列队

array_shift($arr);数组中的第一个元素移出并做为结果返回(数组长度减1,其余元素向前移动一位,数字键名改成从零技术,文字键名不变)
array_unshift($arr,"a",array(1,2));在数组的开头插入一个或多个元素

5、回调函数

array_walk($arr,'function','words');  使用用户函数对数组中的每一个成员进行处理(第三个参数传递给回调函数function)
array_mpa("function",$arr1,$arr2);  能够处理多个数组(当使用两个或更多数组时,他们的长度应该相同)
array_filter($arr,"function");  使用回调函数过滤数组中的每一个元素,若是回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变
array_reduce($arr,"function","*");  转化为单值函数(*为数组的第一个值)

6、数组的排序

经过元素值对数组排序

sort($arr);  由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
rsort($arr);  由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
usort($arr,"function");  使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
asort($arr);  由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
arsort($arr);  由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
uasort($arr,"function");  使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序

经过键名对数组排序

ksort($arr);  按照键名正序排序
krsort($arr);  按照键名逆序排序
uksort($arr,"function");  使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)

天然排序法排序

natsort($arr);  天然排序(忽略键名)
natcasesort($arr);  天然排序(忽略大小写,忽略键名)

7、数组的计算

数组元素的求和

array_sum($arr);  对数组内部的全部元素作求和运算

数组的合并

array_merge($arr1,$arr2);  合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名,后面的不会作覆盖操做,而是附加到后面)

 

8、其余的数组函数

range(0,12);  建立一个包含指定范围单元的数组
array_unique($arr);  移除数组中重复的值,新的数组中会保留原始的键名
array_rand($arr,2);  从数组中随机取出一个或 多个元素
shuffle($arr);  将数组的顺序打乱

本类函数容许用多种方法来操做数组和与之交互。数组的本质是储存,管理和操做一组变量。

 

 

 

 

 

 

PHP经常使用字符串函数小结(推荐)

 

 

1、判断类型的函数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
is_bool ()    //判断是否为布尔型
is_float ()   //判断是否为浮点型
is_real ()    //同上
is_int ()    //判断是否为整型
is_integer ()  //同上
is_string ()   //判断是否为字符串
is_object ()   //判断是否为对象
is_array ()   //判断是否为数组
is_null ()    //判断是否为null
is_file ()    //判断是否为文件
is_dir ()    //判断是否为目录
is_numeric ()  //判断是否为数字
is_nan ()    //判断不是数字
is_resource ()  //判断是否为资源类型
is_a ( $obj , $classname ) //判断对象是否为类的实例
            //可用 if($obj instanceof Classname)

2、获取子串位置

?
1
2
3
4
strpos ( $hs , $nd [,int $offset = 0 ]) //返回nd 在 hs 中首次出现的数字位置。
stripos ( $hs , $nd [,int $offset = 0 ]) //返回nd 在 hs 中首次出现的数字位置, 不区分大小写。
strrpos ( $hs , $nd [,int $offset = 0 ]) //返回nd 在 hs 中最后一次出现的数字位置。
strripos ( $hs , $nd [,int $offset = 0 ]) //返回nd 在 hs 中最后一次出现的数字位置,不区分大小写。

3、获取子串

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
substr ( $str , $start [, $length ]); //获取子串
substr_compare ( $main_str , $str , $offset [, $length ]); //子串比较 从offset处开始比较
substr_count( $hs , $nd [, $offset =0 [, $length ]]); //获取子串nd在hs中出现的次数
substr_replace( $string , $replacement , $start [, $length ]); //字符串子串替换
                 //用$replacement替换掉$string从start开始长度为length的子串
strstr ( $hys , $nd [,bool $before_needle = false ]); //返回$nd在$hys 第一次出现的地方开始到字符串结束 为止的字符串
         //第三个参数若是为true 则返回$nd 以前的字符串
stristr ( $hys , $nd [,bool $before_needle = false ]); //同上,忽略大小写版本
strrchr ( $hys , $nd ); //返回$nd在$hys最后一次出现的地方开始到字符串结束 为止的字符串
         //通常和 substr(strrchr($hys,$nd),strlen($nd)); 合用
strpbrk ( $haystack , $char_list ); //从$char_list中依次匹配单个字符在$haystack中第一次出现的地方
             //到字符串结束的地方 的整个字符串
strtok ( $str , $token ); //第一次使用 将字符串按分隔符$token进行分割
strtok ( $token );   //第二次使用
     eg.
     $string = "This is\tan example\nstring" ;
     /* 使用制表符和换行符做为分界符 */
     $tok = strtok ( $string , " \n\t" );
  
     while ( $tok !== false) {
         echo "Word=$tok<br />" ;
         $tok = strtok ( " \n\t" );
     }

4、字符串str_ 型函数

?
1
2
3
4
5
6
7
8
str_getcsv( $str ); //将csv文件字符串转换成一个数组
str_replace ( $search , $replace , $subject [,& $count ]); //搜索并替换字符串
       //第四个参数被指定的话,将会赋值给他替换的次数
str_ireplace ( $search , $replace , $subject [,& $count ]); //搜索并替换字符串
       //第四个参数被指定的话,将会赋值给他替换的次数 忽略大小写
str_shuffle (string $str ); //随机打乱字符串
str_split ( $str [, $len =1]); //将字符串转换成一个数组
              //,每一个数组单元的长度为$len

5、字符串长度

strlen($str); //字符串长度

6、翻转字符串

strrev(string $string);// 翻转字符串

7、mb_类型字符串函数

mb_类型字符串与上述字符串函数基本同样,
只是加多一个可选的字符编码参数,用法同上
这里列出一些其余有用函数

一、检测字符串的字符编码

?
1
2
3
4
$encode = mb_detect_encoding( $lines , array ( "ASCII" , "UTF-8" , "GB2312" , "GBK" , "BIG5" ));
if ( $encode != "UTF-8" ){
   $lines = iconv( $encode , "UTF-8" , $lines );
}

8、字符串的相关操做

一、转换字符串类型

?
1
2
3
strval ( $str ); //转换成字符串类型
floatval ( $str ); //转换成浮点型
intval ( $str ); //转换成整型

二、大小写转换

?
1
2
strtolower ( $str ); //所有转换成小写
strtoupper ( $str ); //所有转换成大写

三、字符串转时间戳

?
1
2
strtotime ( $str ); //时间格式的字符串转换成整型时间戳
       //注意设置时区 不然会有 8小时偏差

四、去除HTML 和 PHP 标记

?
1
strip_tags ( $str [, $tags ]); //去除不含$tags里标签外的全部标签

五、ascii转数字 数字转ascii

?
1
2
chr (int $ascii ); //数字转换成ascii
ord(string $str ); //返回$str第一个字符的ascii值

六、json的编码与解码

?
1
2
3
json_encode( $obj / $arr / $str ...); //编码成json 格式的字符串
json_decode( $jsonstr [, $assoc =true]); //解码成对象
              //当$assoc=true 时 返回数组 而非对象

七、换行转<br/>

?
1
nl2br ( $str ); //字符串 $str 全部新行以前插入'<br/>'

八、数组转字符串,字符串转数组

?
1
2
implode( $arr , $glue ); //将一维数组转换为字符串
explode (); //字符串转换为数组

九、千位分割格式化

?
1
2
3
4
5
6
string number_format ( float $number [, int $decimals = 0 ] )
string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )
  @param  $number 你要格式化的数字
      $decimals 要保留的小数位数
      $dec_point 指定小数点显示的字符
      $thousands_sep 指定千位分隔符显示的字符

十、去空格

?
1
2
3
trim(string $str [,string $charlist ]); //去左右字符
ltrim(string $str [,string $charlist ]); //去左字符
rtrim(string $str [,string $charlist ]); //去右字符

该函数删除 str 末端的空白字符并返回。

不使用第二个参数, rtrim() 仅删除如下字符: 
• " " (ASCII 32 (0x20)),普通空白符。 
• "\t" (ASCII 9 (0x09)),制表符。 
• "\n" (ASCII 10 (0x0A)),换行符。 
• "\r" (ASCII 13 (0x0D)),回车符。 
• "\0" (ASCII 0 (0x00)),NUL 空字节符。 
• "\x0B" (ASCII 11 (0x0B)),垂直制表符。 
过滤字符也可由 charlist 参数指定。通常要列出全部但愿过滤的字符,
也可使用 ".." 列出一个字符范围

十一、转换字符串编码函数

?
1
2
3
iconv( $in_charset , $out_charset , $str );
$in_charset 输入字符集
$out_charset 输出字符集

十二、字符串加密函数

?
1
2
sha1( $str );
md5( $str );

1三、字符串转义与反转义函数

?
1
2
3
4
5
6
addcslashes (string $str , string $charlist ); //转义字符串中的特殊字符
         //eg. addcslashes($str,"\0..\37!@\177..\377");
               //转义ascii 中0-3七、177-377中不含@符号的字符
  
stripcslashes ( $str ) — 反转义 addcslashes ()函数转义处理过的字符串
  返回反转义后的字符串。可识别相似 C 语言的 \n,\r,... 八进制以及十六进制的描述

1四、按格式返回数据

 
 
?
1
2
3
4
5
6
7
8
9
10
sprintf — 按照要求对数据进行返回,可是不输出
     可表示类型以下:
     string s
     integer d, u, c, o, x, X, b
     double g, G, e, E, f, F
     eg.
     $num = 5;
     $location = 'tree' ;
     $format = 'There are %d monkeys in the %s' ;
     echo sprintf( $format , $num , $location );
相关文章
相关标签/搜索