首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

substr

(PHP 4, PHP 5, PHP 7)

substr - 返回字符串的一部分

描述

代码语言:javascript
复制
string substr ( string $string , int $start [, int $length ] )

返回由start和length参数指定的字符串部分。

参数

string

输入字符串。必须是一个或更多字符。

start

如果start是非负数,则返回的字符串将从字符串的起始位置开始,从零开始计数。 例如,在字符串'abcdef'中,位置0处的字符是'a',位置2处的字符是'c',等等。

如果start是负数,则返回的字符串将从字符串末尾的第start个字符处开始。

如果字符串长度小于起始字符,则返回FALSE。

示例#1 使用负数 start

代码语言:javascript
复制
<?php
$rest = substr("abcdef", -1);    // returns "f"
$rest = substr("abcdef", -2);    // returns "ef"
$rest = substr("abcdef", -3, 1); // returns "d"
?>

length

如果给出长度length并且是正数,则返回的字符串将包含至多从起始处开始的长度字符(取决于字符串的长度)。

如果给出了长度length并且是负数,那么从字符串的末尾将省略很多字符(在起始为负数时计算起始位置之后)。 如果start表示此截断的位置或更远,则将返回FALSE。

如果length给出并且为0FALSE或者NULL,将返回一个空字符串。

如果length省略,start则将返回从字符串开始直到结束的子字符串。

示例#2 使用负数 length

代码语言:javascript
复制
<?php
$rest = substr("abcdef", 0, -1);  // returns "abcde"
$rest = substr("abcdef", 2, -1);  // returns "cde"
$rest = substr("abcdef", 4, -4);  // returns false
$rest = substr("abcdef", -3, -1); // returns "de"
?>

返回值

返回string提取的部分; 或失败时返回FALSE,或返回空字符串。

更新日志

描述

7.0.0

如果字符串等于起始字符长度,则会返回空字符串。在此版本之前,在这种情况下返回了FALSE。

5.2.2 - 5.2.6

如果start参数指示负截断或超出的位置,则返回false。其他版本从头开始获取字符串。

例子

Example#3 基本的substr()用法

代码语言:javascript
复制
<?php
echo substr('abcdef', 1);     // bcdef
echo substr('abcdef', 1, 3);  // bcd
echo substr('abcdef', 0, 4);  // abcd
echo substr('abcdef', 0, 8);  // abcdef
echo substr('abcdef', -1, 1); // f

// Accessing single characters in a string
// can also be achieved using "square brackets"
$string = 'abcdef';
echo $string[0];                 // a
echo $string[3];                 // d
echo $string[strlen($string)-1]; // f

?>

Example#4 substr()投射行为

代码语言:javascript
复制
<?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;
?>

上述PHP 7输出示例:

代码语言:javascript
复制
1) 'pe'
2) '54'
3) 'gr'
4) '1'
5) ''
6) ''
7) '1200'

上面的例子在PHP 5中输出:

代码语言:javascript
复制
1) 'pe'
2) '54'
3) 'gr'
4) '1'
5) false
6) false
7) '1200'

错误/异常

错误时返回FALSE

代码语言:javascript
复制
<?php
var_dump(substr('a', 2)); // bool(false)
?>

扩展内容

  • strrchr() - 查找字符串中最后一次出现的字符
  • substr_replace() - 替换字符串的一部分中的文本
  • preg_match() - 执行正则表达式匹配
  • trim() - 从字符串的开头和结尾去除空白字符(或其他字符)
  • mb_substr() - 获取字符串的一部分
  • wordwrap() - 将字符串包装为给定数量的字符
  • 按字符访问和修改字符串

← substr_replace

trim →

扫码关注腾讯云开发者

领取腾讯云代金券