php字串函式(1)長度計算 查詢 擷取

2021-08-11 06:32:27 字數 3665 閱讀 3426

1、字串長度函式:

(1)、strlen():計算 字串中 位元組 的長度;

(2)、mb_strlen():根據字元編碼,計算 字串中字元 的個數;如果沒有第二個引數(字元編碼型別),則使用內部字元編碼;

(3)、mb_internal_encoding():設定/獲取內部字元編碼,echo mb_internal_encoding();得到的內部字元編碼為 iso-8859-1(單位元組);

<?php

// utf-8 格式下編碼;

$str = 'hello world!';

$sss = '中華**';

echo mb_strlen($str); // 12; 英文,12個 字元數;

echo mb_strlen($sss,'utf-8'); // 4; utf-8 字元編碼下,字串 $sss的 字元 個數是 4; 在utf-8的格式下進行編輯的;

echo mb_strlen($sss); // 12; 這個是為什麼呢? 初步理解為:沒有第二個引數,使用的是預設字元編碼,iso-8859-1是單位元組編碼,12個位元組數(4個中文字元占用12個位元組);得出12個字元;

echo mb_strlen($sss,'gbk'); // 6; 第二個引數是'gbk',為什麼不是4呢?而不是6? 後續重點再回頭理解;

?>

2、字串查詢函式:字串(str)中是否存在???  

(第二個引數)。從**開始找??(第三個引數);

(1)strpos():查詢 目前字串 在 指定字串 中 第一次出現的位置; 

注意:由於字串的下標是從數字 「0」開始的,所以第一次出現的位置 有可能是0,故判斷存在不存在的時候,條件表示式應為:if(strpos()!== false);

<?php

$str = 'hello this is lilei,he is a fine boy';

echo strpos($str,'he'); // he 第一次出現的位置 是 0;

echo strpos($str,'is'); // is 第一次出現的位置 是 8;

echo strpos($str,'is',9); // is 第2次出現的位置 是 11; 第三個引數 「9」 表示從第9的位置開始查詢; 如果為 「-9」時候,則從末尾開始數,第9個位置開始查詢;

?>

(2)、strrpos():查詢 目前字串 在 指定字串 中 最後一次出現的位置;r(right) 右邊的意思,即最後一次,右邊第一次;

(3)、stripos():首次出現時的位置(不區分大小寫);strripos():最後一次出現時的位置(不區分大小寫);

<?php

// 計算中 查詢字串 在 目標字串中 出現的次數; 也可以直接用內建函式:substr_count();

$str = 'hello this is lilei,he is a fine boy';

$substr = 'is';

function subnum($str,$substr)

for($sum = 0,$offset = 0;($offset = strpos($str,$substr,$offset)) !== false; $offset += $substrlens, $sum++)

return $sum;

}echo subnum($str,$substr); // is 出現了 3 次在$str字串中;

echo substr_count($str,$substr); // 通過內建函式計算,輸出的結果 同樣為 3;

?>

3、字串 擷取 函式:

(1)、substr():返回字串的一部分; 從哪開始截,截幾個

; 是按照 位元組 來進行計算擷取的;

<?php

$str = 'fdghfhjgh';

echo substr($str,2,-5); //結果為「gh」 ;從哪開始擷取,截幾個,若沒有第三個引數則擷取到末尾,若引數為負數,則從右邊末尾開始計算;倒數第幾個開始截,擷取到哪(省略、捨棄幾個);

?>

注意:此substr函式中第三個引數,即length(擷取幾個/擷取到哪),如果設定成0,false或者是null的時候,則返回空字串;這一點和陣列 擷取 函式 array_slice ()有些區別,array_slice()函式的第三個引數length(擷取幾個/擷取到哪)的預設值是null,即:此引數如果沒有實參賦值的時候,則取其預設值null;一直擷取到末尾表示;

(2)、strstr():查詢字串的在首次原始字串中首次出現,並返回字串的一部分; 

字串中是否存在?

stristr():忽略大小寫;  

<?php

$sss = '我是乙個中國人';

$str = 'sdfs dgfddfh f';

echo strstr($sss,'乙個'); // 乙個中國人;

echo strstr($str,'fs',true); // sd

// 注意:第三個形式引數預設值是false,如果不設定第3個引數,則返回後一部分字串,如果設定了實參true,則返回 第一次出現 的 前 一部分字串;

?>

(3)、strrchr():字元 在字串中最後一次出現(從右邊看,第一次);

<?php

$str = 'sdfs dgfddx1x00fh fsdfs dgfddx1x00fh f';

echo strrchr($str,'00'); // 0fh f ; 注意:strrchr()是針對指定的 』字元『(沒有串)來進行匹配操作的;如果不是乙個字元,則使用第乙個字元; 這個是和strstr第乙個不一樣的地方;

// '00'是個字串,不是乙個字元,則會使用第乙個字元:即'0'; 所以此語句相當於:echo strrchr($str,'0');

echo strrchr($str,'1x'); // 1x00fh f

// 注意:此函式和strstr第2個不同的地方在於:沒有第3個預設值是false的引數,即,不能返回字元的前一部分; 可以通過字串反轉函式strrev()來實現;

?>

<?php

$str = 'sdfs dgfddx1x00fh fsdfs dgfddx1x00fh f';

echo strrchr($str,'1'),'

'; // 1x00fh f;

echo strrev(strstr(strrev($str),'1')); // sdfs dgfddx1x00fh fsdfs dgfddx1 ,通過字串反轉strrev()函式,可以得出其 字元 位置的前一部分;

?>

PHP字串長度計算 strlen 函式

strlen 函式和mb strlen 函式 在php中,函式strlen 返回字串的長度。函式原型如下 int strlen string string input 引數string input為要處理的字串。strlen 函式返回字串所佔的位元組長度,乙個英文本母 數字 各種符號均佔乙個位元組,...

php 字串長度函式

php 字串長度函式 php 字串長度函式,在php測試字串長度的函式有二個,乙個是strlen,另乙個是mb strlen前乙個預設是支援,後乙個需要開啟乙個外掛程式,下面我們來介紹一下二個函式的區別與應用方法。php strlen 函式 定義和用法 strlen 函式返回字串的長度。語法strl...

計算字串長度

獲取指定字串的長度,除英文 數字算乙個長度外其餘字元全算兩個長度 public int length string s return len 匹配中文字元的正規表示式 u4e00 u9fa5 匹配雙位元組字元 包括漢字在內 x00 xff public static boolean isletter...