字符串截取在php开发中是比较常用的;而且对于截取的需求也有很多种;就比如说对url链接的操作:http://www.baijunyao.com/index.php/Home/Index/article/aid/12
有时我们想截取最后一个斜杠'/'后面的数字;
有时我们又需要截取第一个斜杠'/'前面的内容判断用户输入的url链接带不带http://等等;
字符串的截取php内置函数就有很多种;简单的写几个示例;
1
|
$str
=
'123/456/789/abc'
;
|
截取第一个斜杠前面的内容可以这样来:
1
|
echo
substr
(
$str
,0,
strpos
(
$str
,
'/'
))
|
或者
1
2
3
|
$array
=
explode
(
'/'
,
$str
);
echo
$array
[0];
// 输出 123
|
截取第一个斜杠后面的内容可以这样来:
1
2
|
echo
substr
(
$str
,
strpos
(
$str
,
'/'
)+1);
//输出 456/789/abc
|
截取最后一个斜杠后面的内容可以这样来:
1
|
echo
trim(
strrchr
(
$str
,
'/'
),
'/'
);
|
或者如果知道斜杠的个数
1
2
3
|
$array
=
explode
(
'/'
,
$str
);
echo
$array
[3];
//输出 abc
|
但是问题来了;如果不知道有多少个斜杠呢?如果想要第二个斜杠和第三个斜杠中间的内容呢?
下面我写的这个函数就可以轻松解决如上 所有问题;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
/**
* 按符号截取字符串的指定部分
* @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
];
}
}
}
|
示例:
1
2
3
4
|
echo
cut_str(
$str
,
'/'
,0);
//输出 123
echo
cut_str(
$str
,
'/'
,2);
//输出 789
echo
cut_str(
$str
,
'/'
,-1);
//输出 abc
echo
cut_str(
$str
,
'/'
,-3);
//输出 456
|
怎么样;用这个函数来按符号截取指定部分内容足够强大吧;
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客baijunyao.com