php字符串面试题

本文提供了一系列PHP函数实例,包括生成随机字符串、字符串反转、格式化数字字符串、获取文件扩展名及计算文件相对路径等,旨在帮助开发者快速实现常用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义一个生成随机字符串函数

function generateRandomString($length = 5) {

	$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
	$randomString = '';
	for ($i = 0; $i < $length; $i++) {
		//rand() 函数返回随机整数。
		$randomString .= $characters[rand(0, strlen($characters) - 1)];
	}
	return $randomString; 

}
echo generateRandomString(4);

不用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);
echo "<br>";

写一个函数,将一个字符串每3位用逗号隔开的形式。

(如:1234567890),转换成(如1,234,567,890)

$str2 = "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($str2);

获取文件扩展名的函数

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>";

写一个函数,算出两个文件的相对路径

如:
$a=’/a/b/c/d/e.php’
$b=’/a/b/12/34/c.php’

计算出$b相对于$a的相对路径应该是../../c/d
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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值