PHP开发中常用的字符串截取需求及方法:处理URL斜杠内容截取问题
字符串截取在php开发中是比较常用的;

而且对于截取的需求也有很多种;
就比如说对url链接的操作:
有时我们想要截取处于最后位置的斜杠“/”之后的数字。
有时我们需要截取第一个斜杠“/”之前的内容,以此来判断用户输入的 url 链接是否带有等等。
字符串的截取php内置函数就有很多种;
简单的写几个示例;
$str 有着 '123/456/789/abc'。
PHP
Copy
截取第一个斜杠前面的内容可以这样来:
获取字符串 $str 中从开头到第一个斜杠('/')出现位置之前的部分,即使用 substr 函数截取字符串,第一个参数为 $str,第二个参数为 0,第三个参数为 strpos 函数找到的第一个斜杠的位置。
PHP
Copy
或者
将字符串 $str 以“/”为分隔符进行分割,分割后的结果存储在数组 $array 中。
echo $array[0];
// 输出 123
PHP
Copy
截取第一个斜杠后面的内容可以这样来:
获取字符串 $str 中第一个斜杠('/')的位置,然后将该位置加 1,接着从 $str 中截取从这个位置开始到字符串末尾的子字符串,最后输出这个截取到的子字符串。
//输出 456/789/abc
PHP
Copy
截取最后一个斜杠后面的内容可以这样来:
获取字符串 $str 中最后一个斜杠(/)之后的部分,然后去除该部分末尾的斜杠(/),最后输出结果。
PHP
Copy
或者如果知道斜杠的个数
$array=explode('/', $str);
echo $array[3];
//输出 abc
PHP
Copy
但是出现了问题;倘若不知道存在多少个斜杠呢?倘若想要获取第二个斜杠与第三个斜杠中间的内容呢?
下面我写的这个函数就可以轻松解决如上 所有问题;
/**
* 按符号截取字符串的指定部分
* @param string $str 需要截取的字符串
* @param string $sign 需要截取的符号
如果参数 $number 是正数,就以 0 为起点从左向右截取;如果参数 $number 是负数,就从右向左截取。
* @return string 返回截取的内容
*/
定义一个函数 cut_str,该函数接受三个参数,分别是 $str、$sign 和 $number。函数的功能是对字符串 $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{
返回 $new_array 中索引为 $abs_number-1 的元素。
}
}else{
if($number>=$length){
return 'error';
}else{
return $array[$number];
}
}
}
PHP
Copy
示例:
输出 cut_str 函数作用于 $str 字符串,以 '/' 为分隔符,起始位置为 0 所得到的结果,该结果为 123
输出 cut_str($str, '/', 2) 的结果为 789 。
调用 cut_str 函数,将字符串 $str 按照字符 / 进行分割,取最后一个元素,然后进行输出,输出结果为 abc
使用 cut_str 函数对 $str 进行操作,以“/”为分隔符,从后往前取 -3 个字符,然后进行输出,输出结果为 456。
PHP
Copy
怎么样;用这个函数来按符号截取指定部分内容足够强大吧;