【小白筆記】PHP學習之路 (9) --字符串(1)

定義字符串:

        可以通過單引號( ' )、雙引號( " )、定界符( <<< )定義字符串

    單雙引號的區別:

        解析器不會對單引號中的變量進行解析,而雙引號則相反。如:
        
<?php
	$url = "https://bbs.abc.cn";
	$rmd = "歡迎光臨,討論交流請至{$url}去往\n";  //解析器將會解析雙引號中的變量和轉義符,這裏不加{}會報錯,因爲php支持中文變量名
	$rms = '歡迎光臨,討論交流請至$url去往\n';  //解析器不會解析單引號中的變量和轉義符
	echo $rmd;
	echo $rms;
?>
        結果:
歡迎光臨,討論交流請至https://bbs.abc.cn去往
歡迎光臨,討論交流請至$url去往\n

        由於php要對雙引號中的內容進行解析,所以執行雙引號時相對來說速度會慢一些。
        注意,如果雙引號中變量並不是在字符串末尾,那麼需要用花括號括起來,否則解析器會將$後面一連串字符串作爲變量名。

    定界符:

        用定界符定義的字符串可以跨行,也可以解析其中的變量及轉義符。注意結束處必須頂格。
		$multi_line_str = <<<str
	字符串
	...
str;   //這裏一定要頂格寫
	echo $multi_line_str;

字符串處理函數:

字符串中的空格處理:

trim    刪除字符串左右空格
ltrim   刪除字符串左側空格
rtrim   刪除字符串右側空格

字符串大小寫轉換:

strtolower   將字符串轉換爲小寫
strtoupper   將字符串轉換爲大寫
ucfirst           字符串的首字母大寫
ucwords      每個單詞的首字母大寫
CSS中的text-transform屬性也可以實現一樣的效果。

字符串填充函數:

str_pad("字符串", 長度, "填充內容", 填充的方向)
填充的方向:STR_PAD_BOTH   左右路兩側進行填充,如果填充爲奇數,則右側多填充
                        STR_PAD_LEFT    從左側填充
                        STR_PAD_RIGHT    從右側填充
                        如果長度小於原字符串長度,則不會進行填充。默認填充方向爲右側。
	$str = '  hello world ';
	echo str_pad(trim($str),35,'+');

輸出結果:
hello world++++++++++++++++++++++++

修改一下,從兩側填充:
	$str = '  hello world ';
	echo str_pad(trim($str),16,'+',STR_PAD_BOTH);  //填充後長度改爲16

結果就是這樣(可以看見右側多填充了一個'+'):
++hello world+++

字符串順序翻轉函數:

strrev() 

	$edu = 'study';
	echo strrev($edu);

yduts

md5加密:

md5()     用於對要存儲到數據庫的數據進行加密 
一個小實例:
<?php
	$pwd = 'passwordtest';
	if(@md5($_GET['pwd'])==md5($pwd)){
		echo "登錄成功";
	}else{
?>
<form action="" method="get">
	用戶名:<input type="text" name="uname"/><br/>
	密碼:<input type="password" name="pwd"/><br/>
	<input type="submit" value="登錄"/><br/>
</form>
<?php
}?>

格式化金額字符串函數:

number_format("字符串", 小數位數, '小數點[可選]', '千位分隔符[可選]')
	$number1 = '1524549781243';
	echo number_format($number1,3)

1,524,549,781,243.000

字符串拆分成數組:

explode("拆分依據的字符串", "拆分的字符串", "返回的數組元素的數目[可選]")
	$str = "dsa ash .s 567 asna_sca";
	$arr = explode(' ',$str);
	print_r($arr);


結果:
Array ( [0] => dsa [1] => ash [2] => .s [3] => 567 [4] => asna_sca )

數組元素組合成字符串:

implode("連接字符串[可選]", 數組)   相當於explode的“反函數”,別名join()。
	$str1 = implode('|', $arr);
	var_dump($str1);

結果:
string 'dsa|ash|.s|567|asna_sca' (length=23)

字符串輸出函數:

echo()    輸出一個或多個字符串,嚴格來講echo不是函數而是關鍵字,可以使用簡化語法,即不用括號。
print()     也是輸出字符串,但不支持逗號分隔多個顯示變量的語法。
                  Tips:echo執行性能高於print,且更易用,因此一般不使用print。
printf()    格式化輸出字符串。
print_r()   打印變量的值,可用於數組和對象。
	$url = "https://bbs.rainmeter.cn"."<br/>";
	$arr = array("Peter","Quagmire","Joe");
	print_r($url);
	print_r($arr);

結果:
https://bbs.rainmeter.cn
Array ( [0] => Peter [1] => Quagmire [2] => Joe )


<?php
	$price = '200.75';
	$num = 437;
	$name = '水晶頭';
	printf('材料名稱:%s  數量:%d  總價:%.4f', $name, $num, $price);
?>

結果:
材料名稱:水晶頭 數量:437 總價:200.7500

如果想用同一個變量以多種格式輸出,可以使用 %數字\$   的形式:
<?php
	$num1 = 23;
	$num2 = 12;
	printf("數量:%1\$u %2\$u 單價:%1\$.2f %2\$.3f", $num1, $num2);
?>

結果:
數量:23 12 單價:23.00 12.000

字符串的截取:

substr(字符串, 開始截取的位置, 截取後的總長度)   

    對字符串進行指定數量的截取。

	$url = "https://bbs.rainmeter.cn"."<br/>";
	$str = substr($url, 8, 13);
	echo $str;

結果:
bbs.rainmeter

也可以反向截取:
	$url = "https://bbs.rainmeter.cn";
	$str = substr($url, -12);
	echo $str;

結果:
rainmeter.cn

strchr() /strstr()

    後者是前者的別名,在一個字符串中查找另一個字符串(第一次出現,區分大小寫),找到則返回從該字符串開始至結尾的字符串,找不到則返回假。

	$url = "https://bbs.rainmeter.cn";
	$str = strchr($url,"rain");
	$str1 = strstr($url,"bbs");
	$str2 = strstr($url,"abc");   //找不到,返回false,在網頁上不顯示
	echo $str,'<br/>',$str1,'<br/>',$str2;
	var_dump($str2);

結果:
rainmeter.cn
bbs.rainmeter.cn
boolean false


stristr()和strrchr()

    如果想查找時不區分大小寫,可以使用stristr()。
    strrchr()    在一個字符串中查找另一個字符串,返回最後出現處到結尾的字符串。

strpos()和stripos()

    前者在字符串中查找字符串(區分大小寫),返回首次出現的位置。後者不區分大小寫

strrpos() 

    從後面查找,功能與strpos()相同 。 

strtok()

    通過字符串把主字符串進行拆分。一次返回“一段”:
例如:
	$some_str = "abc,def,hij,0,klm,nop,qrs";
	$s = strtok($some_str,',');
	while($s){
		echo $s."<br/>";
		$s = strtok(',');
	}
	var_dump(!'0');  //由於'0'==false,因此在拆分到0的地方退出循環

結果:
abc
def
hij
boolean true

如果不想在‘0’處停止,可以使用全等判斷:
while($s!==false){

修改後的結果就是這樣:
abc
def
hij
0
klm
nop
qrs
boolean true

parse_str()   

    把字符串拆分成變量。
	$url = "http://www.nothing.com.hk?uname=zhangsan&age=33&sex=boy";
	$u_msg = substr($url,(strpos($url,'?')+1));
	parse_str($u_msg);
	echo "Welcome to Nothing,username:".$uname." age:".$age." sex:".$sex;

結果:
Welcome to Nothing,username:zhangsan age:33 sex:boy

chuck_split()

    把字符串按指定大小拆分,可指定拆分後每個字符串的長度和連接符,默認是空格。
	$url = "http://www.nothing.com.hk?uname=zhangsan&age=33&sex=boy";
	echo chunk_split($url,3,'--');

結果:
htt--p:/--/ww--w.n--oth--ing--.co--m.h--k?u--nam--e=z--han--gsa--n&a--ge=--33&--sex--=bo--y--


吐槽一下,字符串函數可真多.....抓狂 .一次記不完,下一篇再繼續吧。奮鬥
以上均爲個人理解,初學php,如果有不對的地方,歡迎大家指正!微笑
發佈了38 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章