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

    选择打赏方式

大家在开发中可能会遇到需要截取某一个部分的内容,方法有很多,可以使用正则,也可以用内置函数,但该如何才能尽人意呢?傲世今天就给大家开开眼。

对于截取的需求也分很多种,字符串的截取php内置函数就有很多种;

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

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

简单示例如下:

$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 as_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截取指定两个字符之间字符串
 * @param string $str 需要截取的字符串
 * @param string $start 从这一部分开始截取
 * @param int $end 到这一部分结束截取
 * @return string 返回截取的内容
 * */
function get_between($str, $start, $end)
{
    $substr = substr($str, strlen($start) + strpos($str, $start), (strlen($str) - strpos($str, $end)) * (-1));
    return $substr;
}
使用方法:

echo get_between($redirectUrl, "token/", "?code=");

版权声明:若无特殊注明,本文为《傲世》原创,转载请保留文章出处。
本文链接:https://www.recho.cn/188.html
如您对本文章内容有所疑问、反馈或补充,欢迎通过邮箱:admin@h2fast.cn 联系我们!
正文到此结束

热门推荐