>> 本文固定链接: 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);
?>
 

php字符串常见面试题的更多相关文章

  1. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  2. iOS常见面试题汇总

    iOS常见面试题汇总 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 i ...

  3. JDBC常见面试题

    以下我是归纳的JDBC知识点图: 图上的知识点都可以在我其他的文章内找到相应内容. JDBC常见面试题 JDBC操作数据库的步骤 ? JDBC操作数据库的步骤 ? 注册数据库驱动. 建立数据库连接. ...

  4. Mybatis常见面试题

    Mybatis常见面试题 #{}和${}的区别是什么? #{}和${}的区别是什么? 在Mybatis中,有两种占位符 #{}解析传递进来的参数数据 ${}对传递进来的参数原样拼接在SQL中 #{}是 ...

  5. JavaSE:数据类型之间的转换(附常见面试题)

    数据类型之间的转换 分为以下几种情况: 1)低级到高级的自动类型转换: 2)高级到低级的强制类型转换(会导致溢出或丢失精度): 3)基本类型向类类型转换: 4)基本类型向字符串的转换: 5)类类型向字 ...

  6. 整理的最全 python常见面试题(基本必考)

    整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...

  7. PHP常见面试题汇总(二)

    PHP常见面试题汇总(二)   //第51题:统计一维数组中所有值出现的次数?返回一个数组,其元素的键名是原数组的值;键值是该值在原数组中出现的次数 $array=array(4,5,1,2,3,1, ...

  8. java常见面试题及答案

    java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...

  9. python爬虫常见面试题(一)

    前言 之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆:二是给自己一个和大家交流的机会,互相学习.进步,希望不正之处大家能给予指正:三是我也是互联网寒潮下岗的那批人之一,为 ...

随机推荐

  1. 【数学】Codeforces 707C Pythagorean Triples

    题目链接: http://codeforces.com/problemset/problem/707/C 题目大意: 给你一个数,构造其余两个勾股数.任意一组答案即可,没法构造输出-1. 答案long ...

  2. [Locked] Strobogrammatic Number & Strobogrammatic Number II & Strobogrammatic Number III

    Strobogrammatic Number A strobogrammatic number is a number that looks the same when rotated 180 deg ...

  3. C++ static(施工中)

    static 变量 头文件中的static会在引用该头文件的cpp中分别生成副本 //H.h #ifndef _H_H_ #define _H_H_ ; #endif //Ex_2.c #includ ...

  4. SANSA 上上洛可可 贾伟作品 高山流水 香炉 香插香台香具 高端商务礼品 黑色【正品 价格 图片 折扣 评论】_尚品网ShangPin.com

    SANSA 上上洛可可 贾伟作品 高山流水 香炉 香插香台香具 高端商务礼品 黑色[正品 价格 图片 折扣 评论]_尚品网ShangPin.com

  5. H - Cow Contest

    有N头牛,编号从1到N,参与一个变成比赛(大牛编程比赛,一般水水平敢参加???),一些牛的代码比较出色,每头牛都有一个独一无二的技能等级在这些竞争者中. 比赛循环进行在任意两头牛之间(姑且这么翻译吧) ...

  6. C++设计模式---职责链模式

    职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿这条链传递该请求,直到有一个对象处理它为止. 这里发出这个请求的客户端并不知道这当中的哪一 ...

  7. Druid数据库连接池使用

    转: http://lj6684.iteye.com/blog/1770093 阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好   简单使用介绍 Dru ...

  8. 遭遇多线程bug (1)

    某些用户,机器重启后,到第三方服务器的连接起不来,而到我们自己服务器的连接就没事. 如果连接由于网络或其他原因fail掉,过一定时间后应该会重新尝试建立连接的. 测试组做初步调查,他们能在本地环境复现 ...

  9. Python操作MySQL -即pymysql/SQLAlchemy用法

    本节介绍Python对于MySQL的一些操作用法 模块1:pymysql(等同于MySQLdb) 说明:pymysql与MySQLdb模块的使用基本相同,学会pymysql,使用MySQLdb也就不是 ...

  10. python面对对象编程-------5:获取属性的四种办法:@property, __setattr__(__getattr__) ,descriptor

    一:最基本的属性操作 class Generic: pass g= Generic() >>> g.attribute= "value" #创建属性并赋值 > ...