请选择 进入手机版 | 继续访问电脑版

找我啊

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1012|回复: 0

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

[复制链接]

24

主题

27

帖子

142

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
142
QQ
发表于 2019-6-12 20:04:29 | 显示全部楼层 |阅读模式
字符串截取在php开发中是比较常用的;
而且对于截取的需求也有很多种;
就比如说对url链接的操作:http://baijunyao.com/article/12
有时我们想截取最后一个斜杠'/'后面的数字;
有时我们又需要截取第一个斜杠'/'前面的内容判断用户输入的url链接带不带http://等等;
字符串的截取php内置函数就有很多种;
简单的写几个示例;

  1. $str='123/456/789/abc';
复制代码


截取第一个斜杠前面的内容可以这样来:
  1. echo substr($str,0,strpos($str, '/'))
复制代码


或者
  1. $array=explode('/', $str);
  2. echo $array[0];
  3. // 输出 123
复制代码



截取第一个斜杠后面的内容可以这样来:
  1. echo substr($str,strpos($str,'/')+1);
  2. //输出 456/789/abc
复制代码


截取最后一个斜杠后面的内容可以这样来:
  1. echo trim(strrchr($str, '/'),'/');
复制代码


或者如果知道斜杠的个数
  1. $array=explode('/', $str);
  2. echo $array[3];
  3. //输出 abc
复制代码



但是问题来了;如果不知道有多少个斜杠呢?如果想要第二个斜杠和第三个斜杠中间的内容呢?
下面我写的这个函数就可以轻松解决如上 所有问题;
  1. /**
  2. * 按符号截取字符串的指定部分
  3. * @param string $str 需要截取的字符串
  4. * @param string $sign 需要截取的符号
  5. * @param int $number 如是正数以0为起点从左向右截  负数则从右向左截
  6. * @return string 返回截取的内容
  7. */
  8. function cut_str($str,$sign,$number){
  9.     $array=explode($sign, $str);
  10.     $length=count($array);
  11.     if($number<0){
  12.         $new_array=array_reverse($array);
  13.         $abs_number=abs($number);
  14.         if($abs_number>$length){
  15.             return 'error';
  16.         }else{
  17.             return $new_array[$abs_number-1];
  18.         }
  19.     }else{
  20.         if($number>=$length){
  21.             return 'error';
  22.         }else{
  23.             return $array[$number];
  24.         }
  25.     }
  26. }
复制代码


示例:
  1. echo cut_str($str,'/',0); //输出 123
  2. echo cut_str($str,'/',2); //输出 789
  3. echo cut_str($str,'/',-1);//输出 abc
  4. echo cut_str($str,'/',-3);//输出 456
复制代码



怎么样;用这个函数来按符号截取指定部分内容足够强大吧;



原贴地址 https://baijunyao.com/article/18




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|找我啊 ( 沪ICP备17031007号-2 ) 正在加载今日诗词....

GMT+8, 2019-12-16 11:04 , Processed in 0.063091 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表