前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP常见字符串面试题总结

PHP常见字符串面试题总结

作者头像
Mandy的名字被占用了
发布2019-07-22 15:58:28
1.7K0
发布2019-07-22 15:58:28
举报

实现字符串的翻转

代码语言:javascript
复制
// 系统函数
strrev();
// 自定义函数
$str = "123qwer";
$len = strlen($str);
$newStr = '';
for($i=$len;$i>=0;$i--) {
        $newStr .= mb_substr($str,$i,1,'utf-8');
}
echo $newStr;

获取客户端和服务端的ip地址

代码语言:javascript
复制
echo $_SERVER['REMOTE_ADDR'];//客户端IP
echo $_SERVER['SERVER_ADDR'];//服务器端IP
echo $_SERVER['PHP_SELF'];//结果:"/index.php"
//当前脚本的名称(不包括路径和查询字符串)
echo $_SERVER["HTTP_REFERER"];//链接到当前页面的来源url
echo gethostbyname("www.v1pin.com");//获取指定域名的IP地址
echo getenv("REMOTE_ADDR");//获取客户端IP地址
echo getenv("SERVER_ADDR");//获取服务器端IP地址

如何不通过第三个变量交换两个变量的值

代码语言:javascript
复制
$a = 10;
$b = 20;
$array = [$a, $b];
// list($var1, $var2....) = $array;
//将数组的值复制给一组变量,该数组只能为索引并且数组索引0开头
list($b,$a) = $array;
echo $b,$a;
$a = $a+$b;
//只适用于数据不适用于字符串的变量
$a = ($a+$b)-$b;
$b = ($a+$b)-$b;
//将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
$a = $a^$b;
echo $a;
$b = $b^$a;
echo $b;
$a = $a^$b;
echo $a;
echo "<hr/>";
echo $a,$b;

数组和字符串如何实现相互转换

代码语言:javascript
复制
// 字符串转数组
// explode('分隔符', 字符串);将字符串按照分隔符组装为一个数组
$string = "我,爱,她,!";
var_dump(explode(',', $string));
// 数组转字符串
// implode('分隔符', 数组);将数组按照指定的分隔符拆分为一字符串
$array = ['name' => '张三','age' => 12];
echo implode(',', $array);
// str_split(字符串, 长度);
// 将字符串按照指定的长度分割为数组,字符串中空格也占位
$str = "hello, world !";
var_dump(str_split($str, 2));

字符串替换

代码语言:javascript
复制
// str_replace($findStr, $replaceStr, $str, $count);区分大小写
// str_ireplace($findStr, $replaceStr, $str, $count);不区分大小写
$string = 'hello,world!';
echo str_replace('O', '1', $string);

字符串截取

代码语言:javascript
复制
// mb_substr();可以处理中文编码问题
$string = "我爱你中国!";
echo mb_substr($string, 3, 2, 'UTF-8');
// strstr() 是根据特定字符开始截取指定长度
$strStr = 'hello,world';
strstr($strStr, 'o', true);
// substr() 是根据特定长度截取指定长度
$subStr ='hello,world';
echo substr($subStr, -2, 4);

如何将一个字符串转换为驼峰命名的方式

代码语言:javascript
复制
// ucfirst($str);将字符串的第一个字母转换为大写
// lcfirst($str);将字符串的第一个字母转换为小写
// ucwords($str, flag);将字符按照固定格式分割为一个单词,每个单词的首字母大写
$str2 = "high-school-student-informantion-management-system";
// 方式一
$arr = explode('-', $str2);
$len = count($arr);
$newStr = '';
for ($i=0; $i <$len; $i++) {
    $newStr .= ucfirst($arr[$i]);
}
echo lcfirst($newStr);
// 方式二
$str3 = ucwords($str2, '-');
echo str_replace('-', '', lcfirst($str3));

统计字符串出现频率

代码语言:javascript
复制
$str = substr_count("hello, world!", 'o');
echo $str;

比较两个字符串是否相等

代码语言:javascript
复制
// strcmp($var1, $var2);比较两个变量的大小
// > 返回 <0,< 返回 > 0,= 返回 0
// strcmp($var1, $var2);函数不区分大小写
$var1 = "Hello";
$var2 = "Hello";
if (strcmp($var1, $var2) != 0) {
    echo "两个字符串不相等";
} else {
    echo strcmp($var1, $var2);
}

写一个函数,将一个字符串(如:1234567890),转换成(如1,234,567,890)每3位用逗号隔开的形式

代码语言:javascript
复制
$str = "12345678932132";
function strFormat($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 strFormat($str);

如何获取一个文件的扩展名

代码语言:javascript
复制
pathinfo()函数,返回文件路径名称、文件名称、扩展名称
// 方式一:利用系统函数操作
$fileInfo = __DIR__ ."/php_function.php";
// 扩展名
echo((pathinfo($fileInfo))['extension']);
// 路径名
echo((pathinfo($fileInfo))['dirname']);
// 文件名
echo((pathinfo($fileInfo))['basename']);
echo "<hr/>";
// 方式二:自定义函数操作
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>";
echo "<hr/>获取文件路径名称";
$str = "http://***/aaa/init.inc.php?a=100";
echo mb_substr($str, 0, strripos($str, '/'));
echo "<hr/>获取文件名称";
$str = "http://***/aaa/init.inc.php?a=100";
echo (explode('?', mb_substr($str, strripos($str, '/'))))[0];

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

代码语言:javascript
复制
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);

由于此类问文章首发地址为该微信公众号,后期会不断更新,微信公众号不便于更新,可以点击左下角的阅读原文按钮,即可查看最新版本。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡二条的技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档