PHP按符号截取字符串的指定部分的实现方法


Posted in PHP onSeptember 10, 2018

字符串截取在php开发中是比较常用的;

而且对于截取的需求也有很多种;

有时我们想截取最后一个斜杠'/'后面的数字;

有时我们又需要截取第一个斜杠'/'前面的内容判断用户输入的url链接带不带http://等等;

字符串的截取php内置函数就有很多种;

简单示例如下;

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

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

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

或者

$array=explode('/', $str);
 echo $array[0];
 // 输出 123

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

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

如果知道斜杠的数量

$array=explode('/', $str);
 echo $array[3];
 //输出 abc

如果不知道有多少个斜杠呢?如果想要第二个斜杠和第三个斜杠中间的内容呢?

下面这个函数就可以轻松解决如上 所有问题;

/**
 * 按符号截取字符串的指定部分
 * @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<0){
   $new_array=array_reverse($array);
   $abs_number=abs($number);
   if($abs_number>$length){
    return 'error';
   }else{
    return $new_array[$abs_number-1];
   }
  }else{
   if($number>=$length){
    return 'error';
   }else{
    return $array[$number];
   }
  }
 }

示例

echo cut_str($str,'/',0); //输出 123
 echo cut_str($str,'/',2); //输出 789
 echo cut_str($str,'/',-1);//输出 abc
 echo cut_str($str,'/',-3);//输出 456

补充:下面看下php截取指定两个字符之间字符串

/**
 * php截取指定两个字符之间字符串,默认字符集为utf-8 Power by 大耳朵图图
 * @param string $begin 开始字符串
 * @param string $end 结束字符串
 * @param string $str 需要截取的字符串
 * @return string
 */
function cut($begin,$end,$str){
 $b = mb_strpos($str,$begin) + mb_strlen($begin);
 $e = mb_strpos($str,$end) - $b;

 return mb_substr($str,$b,$e);
}

调用

echo $this->cut('token/','?code',$redirectUrl);die;

上面的方法不是很好用,当截取的是值为串的时候,会出现截取不到的情况用下面的吧

/*
 * php截取指定两个字符之间字符串
 * */
function get_between($input, $start, $end) {
 $substr = substr($input, strlen($start)+strpos($input, $start),(strlen($input) - strpos($input, $end))*(-1));
 return $substr;
}

调用

$sVid = $this->get_between($redirectUrl, "token/", "?code=");

总结

以上所述是小编给大家介绍的PHP按符号截取字符串的指定部分的实现方法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
header()函数使用说明
Nov 23 PHP
php $_SERVER当前完整url的写法
Nov 12 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
PHP_Cooikes不同页面无法传递的解决方法
Mar 07 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
PHP环形链表实现方法示例
Sep 15 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
PHP连接及操作PostgreSQL数据库的方法详解
Jan 30 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 #PHP
使用PHPExcel导出Excel表
Sep 08 #PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 #PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 #PHP
php curl优化下载微信头像的方法总结
Sep 07 #PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 #PHP
PHP日志LOG类定义与用法示例
Sep 06 #PHP
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
PHP添加MySQL数据记录代码
2008/06/07 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
javascript基础知识讲解
2017/01/11 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
python3 实现验证码图片切割的方法
2018/12/07 Python
详解Python学习之安装pandas
2019/04/16 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
什么是Python变量作用域
2020/06/03 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
母亲追悼会答谢词
2014/01/27 职场文书
调解协议书
2014/04/16 职场文书
高二学生评语大全
2014/04/25 职场文书
青年文明号口号
2014/06/17 职场文书
小学教育见习报告
2014/10/31 职场文书
先进工作者申报材料
2014/12/23 职场文书
教师考核评语大全
2014/12/31 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
python爬取某网站原图作为壁纸
2021/06/02 Python
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers