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

字符串替換函數:


str_replace()   區分大小寫        str_ireplace() 不區分大小寫  可以對數組進行替換

	$url = "無人網https://www.nothong.com.cn不存在的域名";
	$str = str_replace('h','H',$url);
	echo $str;

結果:
無人網Https://www.notHong.com.cn不存在的域名

也可以對數組進行替換:
	$url = "無人網https://www.nothong.com.cn不存在的域名";
	$arr1 = array('h','w','o');
	$arr2 = array('HH','WW','OO');
	$str = str_replace($arr1,$arr2,$url,$k);  //$k統計替換次數
	echo $str,$k;

結果:
無人網HHttps://WWWWWW.nOOtHHOOng.cOOm.cn不存在的域名
8

strtr()

    替換字符串中的任意字符。可以通過直接指定字符串,也可以通過數組形式:

	$url = "bbcs.wrvte.blog/pose_verbaxse-lan2gu%126";
	$arr0 = array("bb"=>"B","w"=>"M","2"=>"Q","-"=>"_");
	echo "原字符串:<br/>{$url}<br/>";
	echo strtr($url,$arr0)."<br/>";
	echo strtr($url,"bbw2-","BMQ_");  //"b"被替換成"M","-"不變

結果:

原字符串:
bbcs.wrvte.blog/pose_verbaxse-lan2gu%126
Bcs.Mrvte.blog/pose_verbaxse_lanQgu%1Q6
MMcs.Qrvte.Mlog/pose_verMaxse-lan_gu%1_6

字符串比較函數:

strcmp() 區分大小寫     strcasecmp() 不區分大小寫

    比較字符串(逐個比較ASCII碼),如果相等返回0,前者大返回1,後者大返回-1。

strnatcmp()  按自然數比較字符串

strncmp(字符串, 字符串, 要比較的長度) 

    指定位置比較字符串。例如: echo strncmp("1001", "1002", 3);

similar_text(字符串, 字符串, $k[可選])  

    相似度比較,返回在兩個字符串中均存在字符的個數。可以增加第三個參數$k,會被賦值爲相似度(百分比)。



字符串統計函數:

substr_count(字符串a, 字符串b, 開始查找的位置[可選], 要查找的長度[可選])

    查找b在a中出現了幾次,返回該數字。


字符串處理函數:

parse_url()  URL解析

    解析URL,返回一個數組:
	$url = "https://www.nothing.com.cn/admin/index.php?uname=abc&a=add";
	$arr = parse_url($url);
	echo "<pre>";
	print_r($arr);
	echo $arr['host'];
	echo "<br/>".parse_url($url,PHP_URL_PATH); //PHP_URL_SCHEME、PHP_URL_HOST、PHP_URL_QUERY
	echo $arr['path'];

結果:
Array
(
    [scheme] => https
    [host] => www.nothing.com.cn
    [path] => /admin/index.php
    [query] => uname=abc&a=add
)
www.nothing.com.cn
/admin/index.php/admin/index.php

urlencode()和urldecode()  編碼和解碼

    對url進行編碼和解碼。
例:
	$str = "蛾兒雪柳黃金縷";
	echo "<a href='26.php?h=".urlencode($str)."'>點擊</a><br/>";  //這段代碼包含在26.php中
	echo $_GET['h'];

結果:
點擊  //超鏈接
蛾兒雪柳黃金縷

例1:
	$str2 = "笑語盈盈暗香去";
	echo urlencode($str2);
	echo "<br/>";
	echo urldecode(urlencode($str2));

結果:
%E7%AC%91%E8%AF%AD%E7%9B%88%E7%9B%88%E6%9A%97%E9%A6%99%E5%8E%BB
笑語盈盈暗香去

htmlentities(操作內容, 轉換規則[ 可選,默認爲ENT_COMPAT ])  實體化轉換

    轉換成html實體,會對中文進行轉換(易產生亂碼)
    參數:
             ENT_COMPAT 只轉換雙引號   
             ENT_QUOTES 轉換單雙引號   
             ENT_NOQUOTES 不轉換任何引號
例:
	$str2 = "<h1 style='color:red'>“笑語盈盈”'暗'\"香\"去</h1>";  // " 會被轉換爲&quot;,“”會被轉換爲&ldquo;&rdquo;
	//echo urlencode($str2);
	//echo "<br/>";
	//echo urldecode(urlencode($str2));
	echo $str2;  
	echo htmlentities($str2);  //這裏未加參數,不會對單引號進行轉換

結果:

“笑語盈盈”'暗'"香"去

<h1 style='color:red'>“笑語盈盈”'暗'"香"去</h1>

查看源代碼:

<h1 style='color:red'>“笑語盈盈”'暗'"香"去</h1><br/><h1 style='color:red'>“笑語盈盈”'暗'"香"去</h1>


htmlspecialchars()  非中文的實體化轉換

    有時候只想將非中文字符串轉化爲實體,就可以使用htmlspecialchars()函數。這樣可以防止誤轉化中文而產生亂碼。
    通過實體化可以一定程度上有效地防止惡意信息
    例如用戶發帖子時:
<div style="width:9999px;height:9999px;background-color:#000;z-index:9999;"></div>

如果這樣的一個帖子未經處理而直接發出,那麼整個網站頁面都會被這行html代碼破壞。
同樣地,如果用戶在表單輸入框輸入某些惡意代碼,這些代碼未經處理就直接發送,那麼極有可能產生巨大的破壞。

htmlspecialchars_decode()   去實體化

    將已經轉換爲html實體的內容轉換爲字符串。
    注意:沒有htmlentities_decode()函數。

addslashes()  自動字符轉義


get_magic_quotes_gpc()   獲得系統(php.ini)是否對外部表單項、cookie等開啓轉義,返回1或0

    對預定義字符串進行轉義。PHP默認開啓了GET、POST方法自動轉義(引號、換行等),
    但是有的時候環境並未開啓自動轉義,即可使用此函數進行轉義。
php.ini默認開啓了自動轉義:
; magic_quotes_gpc
;   Default Value: On
;   Development Value: Off
;   Production Value: Off

注意:使用addslashes()函數時,必須先確認系統是否開啓自動轉義,否則可能產生多重轉義。

stripslashes()  刪除轉義符,相當於addslashes()的"反函數"


ini_get_all()  顯示php.ini的配置信息(數組方式)


phpinfo()   查看php環境的詳細信息


get_magic_quotes_runtime()  獲得外部文件和數據庫資料時是否進行轉義


set_magic_quotes_runtime(1)  設置自動轉義(開啓),關閉爲0


strip_tags(字符串, '<span>'[可選])  去除html、xml、php中的所有的標籤,可選參數:要保留的標籤


終於把字符串這一章的內容啃完了,php函數好多,只能多複習、慢慢消化了……奮鬥
以上均爲個人理解,初學php,如果有不對的地方,歡迎大家指正!微笑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章