PHP转Go系列 | PHP8 这些新函数让你眼前一亮

大家好,我是码农先森。

在 PHP8 之前做字符串相关的检查操作比较麻烦,可读性也比较差,很容易踩坑。比如 strpos('Hello World', 'World') !== false 这行代码,时常容易看走眼,特别是在遇到紧急问题时,这种代码很让人抓狂。好在现在 PHP8 对相关的函数进行了简化,提高了可阅读性,比如 str_contains('Hello World', 'World') 这样就好理解多了,直接从字面意思就可以快速判断出来结果,这不就是 PHPer 的福音嘛。其实,如果熟悉 Go 的兄弟们就知道,在 Go 语言中从一开始就是这样的用法,这一点还是值得 PHP 语言学习的。当然,我们升级到 PHP8 之后,也可以这么爽快的编程了。

好,我们也来看看,之前的用法和现在 PHP8 做下对比,同时也看下 Go 语言中的用法,多看看不同语言的用法,也可以开拓一下技术视野。

检查字符串包含关系,新的写法简洁了许多。

php 复制代码
<?php

// 以前的写法
if (strpos('Hello World', 'World') !== false) {
    echo "找到了 World";
}

// PHP 8 的新写法
if (str_contains('Hello World', 'World')) {
    echo "找到了 World";
}

PHP8 和 Go 语言中就是类似的用法了。

go 复制代码
package main

import (
    "fmt"
    "strings"
)

func main() {
    if strings.Contains("Hello, World!", "World") {
        fmt.Println("找到了 World")
    }
}

检查字符串的开头,之前的用法,我一眼还真是看不出来,也有可能是我水平菜~~,大佬勿喷。像 str_starts_with 这样用,就容易理解很多了。

php 复制代码
<?php

// 检查字符串开头
// 以前的写法
if (strpos("Hello, World", "World) === 0) {
    echo "以 Hello 开头";
}

// php8
// 检查字符串开头
if (str_starts_with("Hello, World", "Hello")) {
    echo "以 Hello 开头";
} 

PHP8 和 Go 语言中用法也是类似了,只是函数名称不一样而已,从字面的意思都很好理解。

go 复制代码
package main

import (
    "fmt"
    "strings"
)

func main() {
    // 检查字符串开头
    if strings.HasPrefix("Hello, World", "Hello") {
        fmt.Println("以 Hello 开头")
    }
}

检查字符串的结尾,这个和上面的函数一下,没什么区别。

php 复制代码
<?php

// 以前的写法
// 检查字符串结尾
if (substr("Hello, World", -strlen("World")) === "World") {
    echo "以 World 结尾";
}

// php8
// 检查字符串结尾
if(str_ends_with("Hello, World", "World")) {
    echo "以 World 结尾";
}

Go 语言中也是类似玩法。

go 复制代码
package main

import (
    "fmt"
    "strings"
)

func main() {
    // 检查字符串结尾
    if strings.HasSuffix("Hello, World", "World") {
        fmt.Println("以 World 结尾")
    }
}

说实话,PHP8 中的这三个新函数让字符串检查,变得非常直观,就像让代码说人话一样。这对我们程序员来说是一件大好事,提升可读性,减少 Bug 量,升级到 PHP8 之后,再也不用维护类似的屎山代码了。

每一次的升级都是在向好的过程中迈进,PHP8 的新函数不是锦上添花,而是真正能提升开发效率的利器。我们在编程的过程中也要乐于去尝试新的函数,有时候还是能起到事半功倍的效果的。

感谢大家阅读,个人观点仅供参考,欢迎在评论区发表不同观点。


欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

相关推荐
狗凯之家源码网9 小时前
全新 PHP 轻量客服聊天室源码深度评测
开发语言·php·聊天室系统
catchadmin11 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.4.1 发布,新增 MCP 支持
开发语言·php
是真的小外套12 小时前
第13章:网络安全漏洞防护原理与应用
安全·web安全·php
狗凯之家源码网13 小时前
纯 PHP+MySQL 应用市场系统源码实测!
开发语言·mysql·php
2301_322414280416 小时前
基于web的校园失物招领管理系统59695-计算机毕设 原创(免费领源码+部署教程+开发环境)
mysql·nginx·php·apache·thinkphp·phpstudy·wampserver
4SAPI18 小时前
官方API、API聚合平台与自建LLM Gateway:三种方案怎么选
大数据·人工智能·gateway·php
sbjdhjd20 小时前
从 preg_replace 规则到缓存绕过:一次授权 PHP 防护实验中的图片载荷、回调检测与哈希碰撞复盘
网络安全·数据挖掘·php·文件包含·宝塔·哈希·火绒
青企通20 小时前
传统企业数字化转型的技术路径:从需求建模到小程序 MVP 的落地方法
小程序·php·apache
一支蜉蝣20 小时前
Day25 XD安全笔记 安全开发-PHP 应用&文件管理模块&包含&上传&遍历&写入&删除&下载&安全
笔记·网络安全·php
itmigrate20 小时前
PHP 导出大 CSV 时内存溢出的一次排查
android·开发语言·php