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 );
相關文章
相關標籤/搜索