>> 本文固定链接: http://php.ncong.com/mianshi/mianshiti_string.html
>> 转载请注明: 恩聪php 2014年09月02日 于 恩聪PHP学习教程 发表
1.不用PHP函数,用方法写一个反转字符串的函数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php $str = "hello" ;
function fan( $str ) {
//声明一个临时的变量
$n = "" ;
//获取字符串长度
$m = strlen ( $str )-1;
for ( $i = $m ; $i >= 0; $i --) {
$n .= $str { $i };
}
return $n ;
}
echo fan( $str );
?> |
2.写一个函数,将一个字符串(如:1234567890),转换成(如1,234,567,890)每3位用逗号隔开的形式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php $str = "12345678932132" ;
function nformat( $str ) {
$n = "" ; //临时的变量
$m = strlen ( $str ); //获取字符串长度
$k = $m % 3; //让整个长度和3取余之后余数是多少 = 0
for ( $i =0; $i < $m ; $i ++) {
if ( $i %3 == $k && $i !=0) {
$n .= "," ;
}
$n .= $str { $i };
}
return $n ;
}
echo nformat( $str );
?> |
3.请写一个获取文件扩展名的函数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php function extname( $url ) {
if ( strstr ( $url , "?" )) {
//如果有问号格式的文件, 将问号前的文件取出给变量$file
list( $file ) = explode ( "?" , $url );
} else {
$file = $url ;
}
//以下是第二步取出文件名
$loc = strrpos ( $file , "/" )+1;
$filename = substr ( $file , $loc );
//以下是第三步取扩展名称
$arr = explode ( "." , $filename );
//弹出数组最后一个元素
return array_pop ( $arr );
}
echo extname( "http://***/aaa/init.inc.php" ). "<br>" ;
echo extname( "init.inc.php" ). "<br>" ;
echo extname( "C:/aaa/init.inc.php" ). "<br>" ;
echo extname( "http://***/aaa/init.inc.php?a=100" ). "<br>" ;
?> |
4.写一个函数,算出两个文件的相对路径。
如:
$a=’/a/b/c/d/e.php’
$b=’/a/b/12/34/c.php’
计算出$b相对于$a的相对路径应该是../../c/d
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
<?php function abspath( $a , $b ) {
//第一步去除公共的目录结构
// $a = "/a/b/c/d/e.php";
// $b = "/a/b/12/34/c.php";
$a = dirname( $a ); // /a/b/c/d
$b = dirname( $b ); // /a/b/12/34
$a = trim( $a , "/" ); // a/b/c/d
$b = trim( $b , "/" ); // a/b/12/34
$a = explode ( "/" , $a ); // array("a", "b", "c", "d")
$b = explode ( "/" , $b ); // array("a", "b", "12", "34")
//合并上面代码相当于 $a = explode("/", trim(dirname($a), "/"));
$num = max( count ( $a ), count ( $b ));
for ( $i =0; $i < $num ; $i ++) {
if ( $a [ $i ]== $b [ $i ]) {
unset( $a [ $i ]);
unset( $b [ $i ]);
} else {
break ;
}
}
//$a = array("c", "d");
//$b = array("12", "34");
//第二步:回到同级目录, 进入另一个目录
$path = str_repeat ( "../" , count ( $b )).implode( "/" , $a ); // ../../c/d
return $path ;
}
$a = "/a/b/c/d/e/w/f/e.php" ;
$b = "/a/b/12/34/100/c.php" ;
// ../../c/d
echo abspath( $a , $b );
?> |