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 相关文章推荐
PHP 一个比较完善的简单文件上传
Mar 25 PHP
php debug 安装技巧
Apr 30 PHP
php中通过curl模拟登陆discuz论坛的实现代码
Feb 16 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
PHP创建桌面快捷方式的实例代码
Feb 17 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 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
PHP一些有意思的小区别
2006/12/06 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
js 3种归并操作的实例代码
2013/10/30 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
python的re模块应用实例
2014/09/26 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
详解python datetime模块
2020/08/17 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
优秀交警事迹材料
2014/01/26 职场文书
卖房协议书
2014/04/11 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
商品陈列协议书
2014/09/29 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL