php字符串常见面试题
>> 本文固定链接: 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://www.lampbrother.net/aaa/init.inc.php" ). "<br>" ; echo extname( "init.inc.php" ). "<br>" ; echo extname( "C:/aaa/init.inc.php" ). "<br>" ; echo extname( "http://www.lampbrother.net/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 ); ?> |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。