substr

(PHP 4, PHP 5, PHP 7, PHP 8)

substr返回字符串的子串

說明

substr(string $string, int $offset, ?int $length = null): string

返回字符串 stringoffsetlength 參數(shù)指定的子字符串。

參數(shù)

string

輸入字符串。

offset

如果 offset 是非負(fù)數(shù),返回的字符串將從 stringoffset 位置開始,從 0 開始計算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。

如果 offset 是負(fù)數(shù),返回的字符串將從 string 結(jié)尾處向前數(shù)第 offset 個字符開始。

如果 string 的長度小于 offset,將返回空字符串。

示例 #1 使用負(fù)數(shù) offset

<?php
$rest 
substr("abcdef", -1);    // 返回 "f"
$rest substr("abcdef", -2);    // 返回 "ef"
$rest substr("abcdef", -31); // 返回 "d"
?>

length

如果提供了正數(shù)的 length,返回的字符串將從 offset 處開始最多包括 length 個字符(取決于 string 的長度)。

如果提供了負(fù)數(shù)的 length,那么 string 末尾處的 length 個字符將會被省略(若 offset 是負(fù)數(shù)則從字符串尾部算起)。如果 offset 不在這段文本中,那么將返回空字符串。

如果提供了值為 0length,那么將返回一個空字符串。

如果沒有提供 length,返回的子字符串將從 offset 位置開始直到字符串結(jié)尾。

示例 #2 使用負(fù)數(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"1null); // bcdef; 在 PHP 8.0.0 之前,返回空字符串
echo substr('abcdef'13);  // bcd
echo substr('abcdef'04);  // abcd
echo substr('abcdef'08);  // abcdef
echo substr('abcdef', -11); // 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"02), true).PHP_EOL;
echo 
"2) ".var_export(substr(5432102), true).PHP_EOL;
echo 
"3) ".var_export(substr(new apple(), 02), true).PHP_EOL;
echo 
"4) ".var_export(substr(true01), true).PHP_EOL;
echo 
"5) ".var_export(substr(false01), true).PHP_EOL;
echo 
"6) ".var_export(substr(""01), true).PHP_EOL;
echo 
"7) ".var_export(substr(1.2e304), 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)

參見