Home  >  Article  >  Backend Development  >  PHP按符号截取字符串的指定部分

PHP按符号截取字符串的指定部分

WBOY
WBOYOriginal
2016-07-30 13:31:091456browse
字符串截取在php开发中是比较常用的;而且对于截取的需求也有很多种;就比如说对url链接的操作:http://www.baijunyao.com/index.php/Home/Index/article/aid/12
有时我们想截取最后一个斜杠'/'后面的数字;有时我们又需要截取第一个斜杠'/'前面的内容判断用户输入的url链接带不带http://等等;
字符串的截取php内置函数就有很多种;简单的写几个示例;

$str='123/456/789/abc';

1

截取第一个斜杠前面的内容可以这样来:

echo substr($str,0,strpos($str'/'))

1

    或者

$array=explode('/'$str);

echo $array[0];

// 输出 123

1

2

3

截取第一个斜杠后面的内容可以这样来:

echo substr($str,strpos($str,'/')+1);

//输出 456/789/abc

1

2


截取最后一个斜杠后面的内容可以这样来:

echo trim(strrchr($str'/'),'/');

1

    或者如果知道斜杠的个数

$array=explode('/'$str);

echo $array[3];

//输出 abc

1

2

3


但是问题来了;如果不知道有多少个斜杠呢?如果想要第二个斜杠和第三个斜杠中间的内容呢?下面我写的这个函数就可以轻松解决如上 所有问题;

/**

 * 按符号截取字符串的指定部分

 * @param string $str 需要截取的字符串

 * @param string $sign 需要截取的符号

 * @param int $number 如是正数以0为起点从左向右截  负数则从右向左截

 * @return string 返回截取的内容

 */

function cut_str($str,$sign,$number){

    $array=explode($sign$str);

    $length=count($array);

    if($number

        $new_array=array_reverse($array);

        $abs_number=abs($number);

        if($abs_number>$length){

            return 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn