1. 程式人生 > >php 字串使用總結

php 字串使用總結

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/>';