php 字串使用總結
阿新 • • 發佈:2019-02-18
1、確定字串長度
在php中使用strlen函式和mb_strlen函式,後者需要開啟mbstring擴充套件
<?php header('content-type:text/html;charset=utf-8'); $str = 'abcdef'; echo strlen($str); // 6 $str = ' ab cd '; echo mb_strlen($str); // 7 //strlen 是計算字串"位元組"長度 //mb_strlen,是根據編碼,計算字串的"字元"個數. $str='中華人民共和國'; //在 UTF-8編碼下,一個漢字佔3個位元組 在gbk中一個漢字佔2個位元組 echo "位元組長度是".strlen($str);//位元組長度是21 echo "字元長度是".mb_strlen($str,'utf-8');//字元長度是7
2、字串剔除和填充
<?php //剔除 $str = ' i am a student '; //剔除字串兩端空格 var_dump(trim($str));//'i am a student' //剔除字串尾部空格 var_dump(rtrim($str));//' i am a student' //剔除字串首部空格 var_dump(ltrim($str));//'i am a student ' //可以通過指定引數,實現更高階功能 var_dump(trim(',1,2,3,4,',','));//1,2,3,4 var_dump(rtrim(',1,2,3,4,',','));//,1,2,3,4 var_dump(ltrim(',1,2,3,4,',','));//1,2,3,4, //填充 //每隔3位填充‘,’ var_dump(chunk_split('12345678',3,','));//123,456,78, //尾部填充,如果字串小於填充位置,則以空格補齊,如果大於填充位置,則尾部追加 var_dump(str_pad('apple', 6)."is good.");//apple is good. var_dump(str_pad('apple123', 6)."is good.");//apple123is good. var_dump(str_pad('app', 6)."is good.");//app is good.
3、字串轉換
<?php
$str = 'i Am a student';
//小寫
var_dump(strtolower($str));//i am a student
//大寫
var_dump(strtoupper($str));//I AM A STUDENT
//首字母大寫
var_dump(ucfirst($str));//I Am a student
//首字母小寫
var_dump(lcfirst($str));//i Am a student
////每個單詞首字母大寫
var_dump(ucwords($str));//I Am A Student
4、字串比較<?php //字串通過==,===,!=,!== 比較 var_dump(22 == '22');//true var_dump(22 === '222');//false var_dump(22 != '22');//false var_dump(22 !== '222');//true //但是以上比較重,可能會出現很多意外 var_dump(0 == '你好');//true var_dump(1 == '1哈哈');//true var_dump(1 == '哈哈');//false
因此,php 字串庫函式中提供了對字串的比較函式,它們的返回值定義為:
1):如果前者大於後者,返回大於0的數
2):如果前者小於後者,返回小於0的數
3):如果前者等於後者,返回0
<?php
$a = 'abbc';
$b = 'aBw';
//區分大小寫比較
var_dump(strcmp($a, $b));//1,表示前者大於後者
//不區分大小寫比較
var_dump(strcasecmp($a, $b));//-21,表示前者小於於後者
//區分大小寫比較,從第三個引數給定比較長度
var_dump(strncmp($a, $b, 3));//1,表示前者大於後者
//不區分大小寫比較,從第三個引數給定位比較長度
var_dump(strncasecmp($a, $b, 3));//-21,表示前者小於於後者
5、字串分割連線翻轉
<?php
$str = "Hi lvfk";
//預設一個一個進行拆分
$arr1 = str_split($str);
print_r($arr1);
//Array ( [0] => H [1] => i [2] => [3] => l [4] => v [5] => f [6] => k )
//每隔3個字元拆分
$arr2 = str_split($str, 3);
print_r($arr2);
// Array ( [0] => Hi [1] => lvf [2] => k )
$str = 'abc,中國,香港,臺灣';
// explode,是根據指定的分割符,把字串拆成陣列.
$arr = explode(',',$str);
print_r($arr);
//Array ( [0] => abc [1] => 中國 [2] => 香港 [3] => 臺灣 )
// implode,是根據指定的連線符,把陣列再拼接成字串,也可以使用join
$arr = explode(',',$str);
echo implode('~',$arr),'<br />';//abc~中國~香港~臺灣
// 你可以只傳一個數組做引數,不指定連線符,
// 這樣,將把陣列單元直接拼接起來
echo implode($arr);//abc中國香港臺灣
<?php
$str = "Hello fri3nd, HI, HI,hi,you're looking good today!";
//字串翻轉
var_dump(strrev($str));//!yadot doog gnikool er'uoy,ih,IH ,IH ,dn3irf olleH
6、統計單詞
<?php
$str = "Hello fri3nd, you're looking good today!";
print_r(str_word_count($str, 1));
//Array ( [0] => Hello [1] => fri [2] => nd [3] => you're [4] => looking [5] => good [6] => today )
7、查詢
<?php
$str = "Hello fri3nd, HI, HI,you're looking good today!";
//strstr & stristr 查詢,並返回查詢成功位置後的所有字串
//strstr區分大小寫
var_dump(strstr($str, 'y'));//you're looking good today!
var_dump(strstr($str, 'A'));//false,此處查詢失敗
//stristr忽略大小寫查詢
var_dump(stristr($str, 'A'));//ay!
//strpos & stripos 查詢位置,並返回查詢成功的位置
//strpos區分大小寫
var_dump(strpos($str, 'you'));//23
var_dump(strpos($str, 'hi'));//false,此處查詢失敗
//stripos不區分大小寫
var_dump(stripos($str, 'HI'));//14
//strrpos 最後一次出現位置
var_dump(strrpos($str, 'HI'));//18
//strripos 最後一次出現位置,不區分大小寫
var_dump(strripos($str, 'HI'));//18
8、字串替換
<?php
$str = "Hello fri3nd, HI, HI,you're looking good today!";
//str_replace,替換,大小寫敏感
var_dump(str_replace('hi', '#', $str));//Hello fri3nd, HI, HI,you're looking good today!
var_dump(str_replace('HI', '#', $str));//Hello fri3nd, #, #,you're looking good today!
//sub_replace 指定位置開始替換
//從字串$str,第二個位置開始替換,並替換全部
var_dump(substr_replace($str, '#', 2));//He#
//從字串$str,第二個位置開始替換,並且只替換2個字元
var_dump(substr_replace($str, '#', 2,2));//He#o fri3nd, HI, HI,you're looking good today!
9、字串擷取,substr,substr_count,substr_compare,substr_replace
<?php
$str = "Hello fri3nd, HI, HI,hi,you're looking good today!";
//擷取
var_dump(substr($str,0,5));//Hello
var_dump(substr($str,5));// fri3nd, HI, HI,hi,you're looking good today!
//統計出現次數,大小寫敏感
var_dump(substr_count($str, 'HI'));//2
//針對中文擷取,可以使用mb_substr
var_dump(mb_substr('你好,中國', 0,2));
//substr_compare() 函式從指定的開始位置比較兩個字串。
echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "de", -2, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // warning
//substr_replace() 函式把字串的一部分替換為另一個字串。
$var = 'ABCDEFGH:/MNRPQR/';
echo "Original: $var<hr />\n";
/* These two examples replace all of $var with 'bob'. */
echo substr_replace($var, 'bob', 0) . "<br />\n";
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />\n";
/* Insert 'bob' right at the beginning of $var. */
echo substr_replace($var, 'bob', 0, 0) . "<br />\n";
/* These next two replace 'MNRPQR' in $var with 'bob'. */
echo substr_replace($var, 'bob', 10, -1) . "<br />\n";
echo substr_replace($var, 'bob', -7, -1) . "<br />\n";
/* Delete 'MNRPQR' from $var. */
echo substr_replace($var, '', 10, -1) . "<br />\n";
10、其他常用字串函式
<?php
//ip字串和長整型之間轉換
var_dump(ip2long('127.0.0.1'));//2130706433
var_dump(long2ip(2130706433));//127.0.0.1
//md5:將一個字串進行MD5演算法加密
var_dump(md5('123'));//202cb962ac59075b964b07152d234b70
//md5_file — 將一個檔案進行MD5演算法加密
var_dump(md5(__FILE__));//a544327e3f2d2bd40ed09eb00ef90338
//bin2hex - 將二進位制資料轉換成十六進位制表示
var_dump(bin2hex('a'));//61
//nl2br — 將字串中的換行符“\n”替換成“<br/>”
var_dump(nl2br("hi \n nih"));//hi <br />nih
11、應用:多種方式獲取路徑字尾
<?php
$url="http://localhost/user/order.php";
function get_ext1($url){
return substr(strrchr($url,"."),1);
}
function get_ext2($url){
$p=pathinfo($url);//Array ( [dirname] => http://localhost/user [basename] => order.php [extension] => php [filename] => order )
return $p['extension'];
}
function get_ext3($url){
return substr($url,strrpos($url,'.')+1);
}
function get_ext4($url){
$arr=explode('.',$url);
return array_pop($arr);
}
function get_ext5($url){
return pathinfo($url,PATHINFO_EXTENSION);
}
echo get_ext1($url).'<br/>';
echo get_ext2($url).'<br/>';
echo get_ext3($url).'<br/>';
echo get_ext4($url).'<br/>';
echo get_ext5($url).'<br/>';