WordPress 5.9 提供了 PHP 8 新增的三个字符串函数的 polyfill
PHP8 引入 3 个处理字符串的方法,分别是 str_contains()
、 str_starts_with()
、 str_ends_with()
,大家一看方法名就已经猜到这三个方法的作用了,而 WordPress 5.9 提供了这三个字符串函数的 polyfill。
polyfill 的意思是即使你服务器 PHP 版本没有 8.0 版本,WordPress 也自己实现了这三个函数,只要你的 WordPress 是 5.9 版本,就可以完全放心的使用 str_contains()
、 str_starts_with()
、 str_ends_with()
这三个函数。
str_contains
检测一个字符串是否含有另一个子字符串。
在 PHP7 中我们一般使用 strpos
方法来检测,但是使用起来总是不够直观,经常还需要查询文档才能明白什么意思,特别是对于新手程序员来说,更不容易理解。
str_contains(string $haystack, string $needle): bool
使用 str_contains
函数的时候,要注意,对于英文,大小写敏感的,另外如果 $needle
为空,则返回 true
。
WordPress 5.9 的 str_contains
polyfill:
if ( ! function_exists( 'str_contains' ) ) {
function str_contains( $haystack, $needle ) {
return ( '' === $needle || false !== strpos( $haystack, $needle ) );
}
}
str_starts_with 和 str_ends_with
这个函数很类似,第一个是检测一个字符串是否以另一个字符串开头,第二个是结尾。
在 PHP7 中我们经常使用 substr_compare
或 strpos
来实现相应的功能,这样的代码不够直观,而且效率也不高。
str_starts_with(string $haystack, string $needle): bool
str_ends_with(string $haystack, string $needle): bool
这两个函数也是一样,对于英文,大小写敏感的,另外如果 $needle
为空,则返回 true
,可以理解为任何字符串以空字符串开始,也是以空字符结尾。
WordPress 5.9 的 str_starts_with
和 str_ends_with
polyfill:
if ( ! function_exists( 'str_starts_with' ) ) {
function str_starts_with( $haystack, $needle ) {
if ( '' === $needle ) {
return true;
}
return 0 === strpos( $haystack, $needle );
}
}
if ( ! function_exists( 'str_ends_with' ) ) {
function str_ends_with( $haystack, $needle ) {
if ( '' === $haystack && '' !== $needle ) {
return false;
}
$len = strlen( $needle );
return 0 === substr_compare( $haystack, $needle, -$len, $len );
}
}
array_key_first 和 array_key_last 函数
在 PHP 7.2 中,通过使用 reset()
,end()
和 key()
等方法,通过改变数组的内部指针来获取数组首尾的键和值。现在,为了避免这种内部干扰,PHP 7.3 推出了新的函数来解决这个问题:
key = array_key_first(array); 获取数组第一个元素的键名key = array_key_last(array); 获取数组最后一个元素的键名
我之前在 WPJAM Basic 实现这两个函数的 polyfill,现在 WordPress 5.9 也实现了这两个函数的 polyfill:
if ( ! function_exists( 'array_key_first' ) ) {
function array_key_first( array $arr ) {
foreach ( $arr as $key => $value ) {
return $key;
}
}
}
if ( ! function_exists( 'array_key_last' ) ) {
function array_key_last( array $arr ) {
if ( empty( $arr ) ) {
return null;
}
end( $arr );
return key( $arr );
}
}
相关文章
- php 字符串替换中文,PHP中文字符串替换其中为*的方法
- php获取客户端IP和服务器端IP[通俗易懂]
- Windows 下 php-sendmail 配置实现
- 学习MySQL还是PHP?(先学php还是mysql)
- 交互PHP与MySQL联动:实现数据交互(php与mysql数据库)
- PHP操作MySQL数据库:实现快速连接(php连接数据库mysql)
- php发送qq邮件的方法详解编程语言
- MySQL在PHP中的灵活运用(php中的mysql)
- PHP中实现Redis队列的挑战与实践(php队列redis)
- Linux更新PHP,提升程序品质(linux更新php)
- PHP启用Redis:轻松灵活的缓存服务(php开启redis)
- PHP编程:如何获取和处理MySQL错误信息(php获取mysql错误)
- MongoDB整合PHP:快速配置你的开发环境(mongodb配置php)
- 使用PHP编写连接MSSQL类,轻松实现数据库操作(php连接mssql 类)
- PHP如何支持使用MS SQL 进行数据库操作(php怎么还用mssql)
- PHP与MSSQL联手谱写新篇章(php大马 mssql)
- PHP字符转义相关函数小结(php下的转义字符串)
- php下判断数组中是否存在相同的值array_unique
- 国外比较好的几个的Php开源建站平台小结
- php关于array_multisort多维数组排序的使用说明
- PHP开发中常用的字符串操作函数
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- PHP和JAVA中的重载(overload)和覆盖(override)介绍
- PHP中防止直接访问或查看或下载config.php文件的方法
- windows7下安装php的php-ssh2扩展教程
- php实现根据url自动生成缩略图的方法