1. 程式人生 > >PHP--字串--總結

PHP--字串--總結

PHP—字串

目錄

PHP—字串

字串三種定義方式

字串的輸出

輸出HTML程式碼

輸出JavaScript程式碼

die(exit)和return的區別

字串輸出

獲取字串長度

strlen()--獲取字串位元組數

mb_strlen()--獲取字串的長度

字串去除特殊字元 

trim()--去除字串首尾處的空白字元(或者其他字元)

ltrim()--刪除字串開頭的空白字元(或其他字元)

rtrim()--刪除字串末端的空白字元(或者其他字元)

str_replace()--子字串替換

nl2br()--在字串所有新行之前插入HTML換行標記

strpos()--查詢字串首次出現的位置

生成4位隨機驗證碼案例

上機任務

任務1

任務2


字串三種定義方式

在平常情況下,使用單引號和雙引號包含字串是一樣的,如果在字串裡邊出現了變數名,如果想輸出變數,則必須使用雙引號,且最好在變數名兩端加上{ },{ }並不會被輸出。

字串的輸出

$name='張宇傑';
$sex='男';
$age=20;
echo "我的姓名:{$name},性別:{$sex},年齡:{$age}";
echo "<br>";
echo "我的姓名:".$name.",性別:".$sex.",年齡:".$age;

輸出結果:

我的姓名:張宇傑,性別:男,年齡:20
我的姓名:張宇傑,性別:男,年齡:20

輸出HTML程式碼

PHP是一個Web程式語言,在程式設計過程中難免會遇到用echo來輸出大段的html和javascript指令碼的情況,如果用傳統的輸出方法——按字串輸出的話,肯定要有大量的轉義符來對字串中的引號等特殊字元進行轉義,以免出現語法錯誤。如果是一兩處還可以容忍,但是要是一個完整的html文字或者是一個200行的js我想是誰都會崩潰的。這就是PHP為什麼要引入一個定界符的原因——至少一大部分原因是這樣的。

PHP中的定界符格式是這樣的:

<<<Eof
……
Eof;
$str=<<<BOF
<table border="2">
    <tr>
        <td width='60'>{$name}</td>
        <td>{$sex}</td>
        <td>{$age}</td>
    <tr>
</table>
BOF;
echo $str;

輸出結果:

輸出JavaScript程式碼

$a='張三';
$str2=<<<STR
<script>alert("{$a}你好")</script>
STR;
echo $str2;

輸出結果:

die(exit)和return的區別

PHP中終止指令碼執行有三種方式,主指令碼程式中使用return,指令碼中使用die()和exit(),三者所在的指令碼檔案之後的程式碼都不會執行。

  1. return:return是一個語法結構,而不是一個函式,如果一個函式中含有return語句,當呼叫此函式時,函式的執行只會到return這一步,return之後的所有語句都不會執行,並將return的引數作為函式值返回。
  2. die:終止整個指令碼的執行,使當前執行停止到這裡,並且不再進行下去。如果有引數,會直接打印出來(只針對字串)。
  3. 在函式外部,return和die沒有什麼區別,但是在函式內部return只是終止函式本身並返回函式值,die終止整個指令碼的執行。

字串輸出語句

  • echo--輸出一個或者多個字串或變數值,他是php語句,不是函式,沒有返回值。
  • print--用於輸出一個或者多個字串或變數值的資訊。他只能打印出簡單型別變數的值(如int,string),不能列印陣列和物件。print有返回值,並且都是1。
  • print_r--是函式,用於列印關於變數的易於理解的資訊。能夠列印複雜的資料型別,比如可以列印陣列和物件。
  • printf()--用於輸出格式化的字串。
  • var_export()--函式用於輸出或返回一個變數的字串表示
  • var_dump()--函式用於顯示關於一個或多個表示式的結構資訊,包括表示式的結構資訊,包括表示式的型別與值。陣列將遞迴展開值,通過縮排顯示其結構。直接輸出到瀏覽器。
     

獲取字串長度

strlen()--獲取字串位元組數

語法:strlen ( string $string )

返回值:成功則返回字串string的位元組數;如果string為空,則返回 0。

$str='張三ab';        //utf-8編碼下,一個漢字佔3個位元組
echo strlen($str);    //輸出8

mb_strlen()--獲取字串的長度

語法:mb_strlen ( string $str [, string $encoding ] )

引數:str:要檢查長度的字串。encoding:encoding 引數為字元編碼。如果省略,則使用內部字元編碼。

返回值:返回具有encoding編碼的字串 str 包含的字元數。多位元組的字元被計為1。如果給定的encoding無效則返回FALSE

$str='張三ab';
echo mb_strlen($str,'utf-8');    //返回字元個數,輸出4

字串去除特殊字元 

trim()--去除字串首尾處的空白字元(或者其他字元)

語法:trim ($str [,$charlist = " \t\n\r\0\x0B" ] )

此函式返回字串 str 去除首尾空白字元後的結果。如果不指定第二個引數, trim() 將去除這些字元:

  • " " (ASCII 32 (0x20)),普通空格符。
  • "\t" (ASCII 9 (0x09)),製表符。
  • "\n" (ASCII 10 (0x0A)),換行符。
  • "\r" (ASCII 13 (0x0D)),回車符。
  • "\0" (ASCII 0 (0x00)),空位元組符。
  • "\x0B" (ASCII 11 (0x0B)),垂直製表符。
$str=' 123456 ';
echo var_dump($str);          //string ' 123456 ' (length=8)
echo var_dump(trim($str));    //string '123456' (length=6)

$str2="\t123456\r\n";    //雙引號中的轉義符號是可以轉義的,單引號中的轉義符號直接輸出
echo var_dump($str2);        //string '	  123456' (length=9)
echo var_dump(trim($str2));  //string '123456' (length=6)

ltrim()--刪除字串開頭的空白字元(或其他字元)

rtrim()--刪除字串末端的空白字元(或者其他字元)

str_replace()--子字串替換

語法:str_replace ($search , $replace , $subject [, int &$count ] )

該函式返回一個字串或者陣列。該字串或陣列是將 subject 中全部的 search 都被 replace 替換之後的結果。

引數:

  • search:查詢的目標值,也就是needle。一個數組可以指定多個目標。
  • replace:search的替換值。一個數組可以被用來指定多重替換。
  • subject:執行替換的陣列或者字串。也就是 haystack。如果 subject 是一個數組,替換操作將遍歷整個 subject,返回值也將是一個數組。
  • count:如果被指定,它的值將被設定為替換髮生的次數。

 

nl2br()--在字串所有新行之前插入HTML換行標記

語法:nl2br(string $string [, bool $is_xhtml = true ] )

在字串 string 所有新行之前插入 '<br />' 或 '<br>',並返回。

$str=<<<STR
張三,男,20
李四,女,17
王五,男,18
STR;
echo nl2br($str);

輸出結果:

張三,男,20<br />
李四,女,17<br />
王五,男,18

 

strpos()--查詢字串首次出現的位置

語法:strpos(string $haystack , $needle [, int $offset = 0 ] )

引數:

  • haystack:在該字串中進行查詢。
  • needle:如果 needle 不是一個字串,那麼它將被轉換為整型並被視為字元的順序值。
  • offset:如果提供了此引數,搜尋會從字串該字元數的起始位置開始統計。和 strrpos()strripos() 不一樣,這個偏移量不能是負數。

返回值:

如果找到,就返回在字串中的起始位置,如果沒找到,就返回false,在進行判斷時應該使用===(完全等於),否則判斷結果可能有錯誤。

生成4位隨機驗證碼案例

$str = "abcdefghijklmnopqrstuvwxyz0123456789";
$len = strlen($str);
$yzm = '';
for ($i = 0; i < 4; i++){
    $rand = mt_rand(0,$len-1);
    $yzm .= substr($str, $rand ,1);
}
echo $yzm;

上機任務

任務1

請寫一個函式,實現以下功能:字串“open_door” 轉換成 “OpenDoor”、”make_by_id” 轉換成 ”MakeById”

<?php
header('content-type:text/html;charset=utf-8');
function change($str) {
	$str = str_replace ( "_", " ", $str );
	$str = ucwords ( $str );
	$str = str_replace ( " ", "", $str );
	return $str;
} 
echo change("open_door");
echo '<br>';
echo change("make_by_id");
?>

輸出結果

OpenDoor
MakeById

 

任務2

頁面從資料庫獲取了title欄位,然後在前臺頁面顯示
比如字串 為: "我校經濟貿易學院與石家莊順捷財稅諮詢有限公司簽訂校企合作協議",現在需要判斷如果超過15個字元 後面用“...“ 代替,如果少於15個字元的話 則不用...

<?php
header('content-type:text/html;charset=utf-8');
$title = '我校經濟貿易學院與石家莊順捷財稅諮詢有限公司簽訂校企合作協議';
$len = mb_strlen($title);
if($len>=15){
	$str = mb_substr($title,0,15).'...';
	echo $str;
}else{
	echo $title;
}
?>

輸出結果

我校經濟貿易學院與石家莊順捷財...