(PHP 4, PHP 5, PHP 7, PHP 8)
substr — 返回字符串的子串
$string, int $offset, ?int $length = null): string
   返回字符串 string 由 offset 和 length 參數(shù)指定的子字符串。
  
string輸入字符串。
offset
       如果 offset 是非負數(shù),返回的字符串將從 string 的 offset 位置開始,從 0 開始計算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。
      
       如果 offset 是負數(shù),返回的字符串將從 string 結(jié)尾處向前數(shù)第 offset 個字符開始。
      
       如果 string 的長度小于 offset,將返回空字符串。
      
示例 #1 使用負數(shù) offset
<?php
$rest = substr("abcdef", -1);    // 返回 "f"
$rest = substr("abcdef", -2);    // 返回 "ef"
$rest = substr("abcdef", -3, 1); // 返回 "d"
?>
length
       如果提供了正數(shù)的 length,返回的字符串將從 offset 處開始最多包括 length 個字符(取決于 string 的長度)。
      
       如果提供了負數(shù)的 length,那么 string 末尾處的 length 個字符將會被省略(若 offset 是負數(shù)則從字符串尾部算起)。如果 offset 不在這段文本中,那么將返回空字符串。
      
       如果提供了值為 0 的 length,那么將返回一個空字符串。
      
       如果沒有提供 length,返回的子字符串將從 offset 位置開始直到字符串結(jié)尾。
      
示例 #2 使用負數(shù) length
<?php
$rest = substr("abcdef", 0, -1);  // 返回 "abcde"
$rest = substr("abcdef", 2, -1);  // 返回 "cde"
$rest = substr("abcdef", 4, -4);  // 返回 ""; 在 PHP 8.0.0 之前,返回 false
$rest = substr("abcdef", -3, -1); // 返回 "de"
?>
   返回提取的 string 部分或者空字符串。
  
| 版本 | 說明 | 
|---|---|
| 8.0.0 | 
        現(xiàn)在 length 允許為 null。
        | 
      
| 8.0.0 | 
        函數(shù)將返回一個空字符串, 在此之前返回 false 。
        | 
      
示例 #3 substr() 基本用法
<?php
echo substr('abcdef', 1);     // bcdef
echo substr("abcdef", 1, null); // bcdef; 在 PHP 8.0.0 之前,返回空字符串
echo substr('abcdef', 1, 3);  // bcd
echo substr('abcdef', 0, 4);  // abcd
echo substr('abcdef', 0, 8);  // abcdef
echo substr('abcdef', -1, 1); // f
// 訪問字符串中的單個字符
// 也可以使用中括號
$string = 'abcdef';
echo $string[0];                 // a
echo $string[3];                 // d
echo $string[strlen($string)-1]; // f
?>
示例 #4 substr() casting behaviour
<?php
class apple {
    public function __toString() {
        return "green";
    }
}
echo "1) ".var_export(substr("pear", 0, 2), true).PHP_EOL;
echo "2) ".var_export(substr(54321, 0, 2), true).PHP_EOL;
echo "3) ".var_export(substr(new apple(), 0, 2), true).PHP_EOL;
echo "4) ".var_export(substr(true, 0, 1), true).PHP_EOL;
echo "5) ".var_export(substr(false, 0, 1), true).PHP_EOL;
echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;
echo "7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;
?>
以上例程會輸出:
1) 'pe' 2) '54' 3) 'gr' 4) '1' 5) '' 6) '' 7) '1200'
示例 #5 無效字符范圍
    如果請求的字符范圍無效, substr() 從 
    PHP 8.0.0 開始返回空字符串;在此之前返回 false 。
    
<?php
var_dump(substr('a', 2));
?>
以上例程在 PHP 8 中的輸出:
string(0) ""
以上例程在 PHP 7 中的輸出:
bool(false)