PHP系列(五)PHP字串處理

weixin_34127717發表於2017-11-12

 php字串處理

1、字串的處理方式(分割匹配找查替換)

//宣告一個關聯陣列,陣列名為$lamp, 成員有4

$lamp = array( 'os'=>'Linux','webserver' =>'Apache', 'db'=>'MySQL', 'language'=>'php' );

//可以解析,雙引號中對於陣列索引,右方括號(])標誌著索引的結束,

//但是注意:不要在[]中使用引號,否則會在引號處結束

echo "A OS is $lamp[os].";

 

//不能解析,如果在對關聯陣列下標使用引號就必須使用花括號,否則將出錯

echo "A OS is $lamp['os'].";

 

//可以解析,如果在對關聯陣列下標使用引號就必須使用花括號,否則將出錯

echo "A OS is {$lamp['os']}.";

 

echo "A OS is {$lamp[os]}."; //可以解析,注意PHP將陣列下標看作常量名,並且常不存在時將常量名稱轉為了字中,效率低

echo "This square is $square->widthmeters broad."; //可以解析,物件中的成員也可以解析

echo "This square is$square->width00 centimeters broad."; //不能解析,可以使用花括號解決

echo "This square is{$square->width}00 centimeters broad."; //可以解析, 使用花括號解決

 

2、常用的字串輸出函式

Echo() 輸出字串 //echo 指令方式可以列印多個值

Print() 輸出一個字串  //有返回值、

區別:

Print有返回值 echo沒有

Print不能列印多個值、但echo指令方式可以列印多個值

Echo “aa”,”bb”,”cc”;

 

Die()  exit()輸出一條訊息、並退出當前指令碼

 

Printf() 輸出格式化字串

Sprint()把格式化的字串寫入一個變數中

Sprint(“%s”, $int);

%% 返回百分比符號

%b  二進位制數

%c  依照ASCII值的字元

%d  帶符號的十進位制數

%e   可續計數法(1.5e3

%u  無符號十進位制數

%f%F  浮點數

%o   八進位制數

%s  字串

%x%X   十六進位制數

 

3、字串處理函式

去除空格和字串填充函式

Ltrim(string  str[,string charlist])

返回值:字串

本函式用來刪去字串中的前導空格

 

Rtrim(string str[,stringcharlist])

返回值:字串

本函式用來刪除字串的字尾空格

 

Trim(string  str[,string charlist])

返回值:字串

截去字串首尾的空格、本函式返回字串string 首尾的空白字元去除後的字串

//宣告一個字串、其中左側有三個空格、右側有二個空格、總長度9個字元

$str = “  lamp  ”;

Echo strlen($str);  //輸出字串的總長度為9

Echo strlen(ltrim($str)) //去掉左側空格後的長度輸出為6

Echo strlen(rtrim($str))//去掉右側空格後的長度輸出為7

Echo strlen(trim($str))//去掉二側空格後的長度輸同為4;

 

$str = “123 This is a test…”;

Echo ltrim($str, “0…9”);//過慮掉字串左側的數字、輸出為This is a test…

Echo rtrim($str, “.”); //過慮掉字串右側所有“.;輸出為:123 Thisis a test

Echo trim($str, “0..9 A..Z”); //過慮掉字串二端的數字和大寫字母還有“.

輸出為:his is a test

 

Str_pad()按需要對字串進行填充

語法:

String str_pad(string input, int pad_length,STR_PAD_LEFT)

STR_PAD_LEFT  字串左新增

STR_PAD_RIGHT 字串右新增
STR_PAD_BOTH 字串二端新增

 

$str =”LAMP”;

Echo str_pad($str, 10);  //指定長度為10、預設空格在右邊填補“LAMP;

Echo str_pad($str, 10,”---”,STR_PAD_LEFT)//指定長度為10 指定在左邊填補“---lamp;

Echo str_pad($str, 10, “--”,STR_PAD_BOTH)//指定長度為10、指定二端填補“---lamp---

Echo str_pad($str,6,”--”,STR_PAD_RIGHT);//指定長度為6、預設在右邊填補“lamp--;

 

字串大小寫的轉換

Strtolower(string)//string全部變成小寫字元

Strtoupper(string)//string全部就成大寫字元

Ucfirst(string)//將字串第一個字元改大寫

Ucwords(string)//將字串每個字元第一個字母改大寫

 

4、和html標籤相關聯的字串格式化

Htmlspecialchars()把預定義的字元"<" (小於)和 ">" (大於)轉換為 HTML 實體

Stripslashes()函式刪除由addslashes()函式新增的反斜槓

Addslashes()在每個雙引號(")前新增反斜槓

<from action=”” method=”post”>

 Title:<input  type=”text” name=”title” value=”” />

<input type=”submit”  name=”dosubmit”  value=”提交”  />

</form>

 

<?php

If(isset($_POST[‘dosubmit’])){

         $title= $_POST[‘title’];

Echo stripslashes(addslashes($title)).”<br>”;

Echo htmlspecialchars($title);

}

?>

Strip_tags()函式剝去字串中的 HTMLXML 以及 PHP 的標籤

 

strcmp(string1,string2)比較兩個字串(區分大小寫)

本函式返回:

0  如果兩個字串相等

-1  如果 string1 小於 string2

1   如果 string1 大於 string2

Strcasecmp(string1,string2)比較兩個字串、不區分大小寫(用法同上)

按自然順序排序(用法同上)

Strnatcmp(string1,string2)區分大小寫

Strnatcasecmp(string1,string2)不區分大小寫

一、不用php函式、用方法寫一個反轉字串的函式

$str = "www.bitedy.com";

function fan($str){

         $n= "";

         $m= strlen($str)-1;

         for($i=$m;$i>0; $i--){

                   $n.=$str{$i};

         }

return $n;

}

echo fan($str);

//echostrrev($str); 返轉字串、顯示為:moc.ydetib.www

 

二、寫一函式將字串進行三個分組

$str = "1234567890";

function nformat($str){

         $n= ""; //臨時的變數

         $m= strlen($str);//獲取字串長度

         $k= $m % 3;//讓整個長度和3取餘之後餘數是多少=0

         for($i=0;$i<$m; $i++){

                   if($i%3== $k && $i!=0){

                            $n.=",";

                   }

                   $n.=$str{$i};

         }

return $n;

}

echo nformat($str);

顯示為:1,234,567,890

 

三、請寫一個獲取副檔名的函式

function Demo($str){

         if(strstr($str, "?")){

                   list($file,$act) = explode("?",$str);

         }else{

                   $file= $str;

         }

$n = strrpos($file,"/")+1;

$filename = substr($file,$n);

 

$arr = explode(".",$filename);

echo array_pop($arr)."<br>";

}

Demo("http://www.bitedy.com/www/nat/init.inc.php?username=100");

Demo("http://www.bitedy.com/www/nat/init.inc.php");

Demo("C:/www/nat/init.inc.php");

Demo("init.inc.php");

Demo("/www/nat/init.inc.php");

顯示為:php php php php php

strstr(string,search,before_search)搜尋字串在另一字串中的第一次出現(區分大小寫 stristr不區分大小寫)

string 必需。規定被搜尋的字串。

Search 必需。規定所搜尋的字串。

Before_search 可選。預設值為 "false" 的布林值。

如果設定為 "true",它將返回 search 引數第一次出現之前的字串部分。

explode(separator, string,limit) 把字串打散為陣列

separator必需。規定在哪裡分割字串。

String必需。要分割的字串。

大於 0 - 返回包含最多 limit 個元素的陣列

小於 0 - 返回包含除了最後的 -limit 個元素以外的所有元素的陣列    0 - 返回包含一個元素的陣列

 

strrpos(string,find,start) 查詢字串在另一字串中最後一次出現的位置。

String  必需。規定被搜尋的字串。

Find  必需。規定要查詢的字元。

Start  可選。規定在何處開始搜尋。

substr(string,start,length) 返回字串的一部分

string 必需。規定要返回其中一部分的字串。

Start  必需。規定在字串的何處開始。

正數 - 在字串的指定位置開始

負數 - 在從字串結尾開始的指定位置開始

0 - 在字串中的第一個字元處開始

Length  可選。規定被返回字串的長度。預設是直到字串的結尾。

正數 -  start 引數所在的位置返回的長度

負數 - 從字串末端返回的長度

array_pop(array)彈出並返回 array 陣列的最後一個單元

 

四、寫一個函式、算出二個檔案的相對路徑

error_reporting(E_ALL & !E_NOTICE);

function ab($a, $b){

         $a= explode("/", trim(dirname($a), "/"));

         $b= explode("/", trim(dirname($b), "/"));

         $n= max(count($a),count($b));

         for($i=0;$i<$n; $i++){

                   if($a[$i]==$b[$i]){

                            unset($a[$i]);

                            unset($b{$i});

                   }else{

                            break;

                   }

         }

$path = str_repeat("../",count($b)).implode("/", $a);

return $path;

}

$a = "/a/b/y/12/14.php";

$b = "/a/b/c/d/11/y/24.php";

echo ab($a, $b);

顯示為:../../../../y/12

 本文轉自 sswqzx 51CTO部落格,原文連結:http://blog.51cto.com/sswqzx/1965458


相關文章