支持双点范围字符掩码语法的原生PHP函数有哪些
PHP支持双点(
..)范围字符掩码的原生字符串函数 首先明确版本差异:
addcslashes()从PHP 4版本起就原生支持..语法表示连续字符范围,是最早支持该特性的字符串函数。- 其余接收字符掩码参数的字符串函数,从PHP 8.3.0版本开始统一支持该语法;低于该版本的环境中,
..会被解析为普通的.字符参与匹配,不会识别为范围标记。
除trim()外,支持该特性的具体函数及用法如下:
ltrim():裁剪字符串开头位置所有匹配掩码的字符,参数逻辑与trim()完全一致。
示例:echo ltrim('456test', '0..9');输出结果为testrtrim()(别名chop()):裁剪字符串末尾位置所有匹配掩码的字符。
示例:echo rtrim('test789', '0..9');输出结果为teststrspn():计算字符串开头连续匹配掩码字符的子串长度。
示例:echo strspn('234abc', '0..9');输出结果为3,对应前3位数字的长度strcspn():计算字符串开头连续不包含掩码字符的子串长度。
示例:echo strcspn('abc567', '0..9');输出结果为3,对应前3位非数字字符的长度strpbrk():查找字符串中第一个匹配掩码的字符位置,返回从该位置到字符串末尾的子串。
示例:echo strpbrk('xyz123aaa', '0..9');输出结果为123aaastr_word_count():统计字符串中的单词数量,其第三个参数(用于指定视为单词组成部分的额外字符列表)在PHP 8.3.0后支持..范围语法。
示例:print_r(str_word_count('test123test', 1, '0..9'));会将数字识别为单词组成部分,返回仅包含test123test一个元素的数组;不支持范围语法时,数字会被当做单词分隔符,返回test、test两个元素。addcslashes():为所有匹配掩码的字符添加反斜杠转义。
示例:echo addcslashes('abc123', 'a..z');输出结果为\a\b\c123
使用注意:
- 编写字符范围时需保证左侧字符的ASCII码小于等于右侧字符,例如
'a..z'、'0..9'为合法写法;如果写反为'z..a',PHP会触发警告,无法正常匹配范围。- 如果需要匹配字面量的
.字符,将其放在掩码字符串的开头或末尾即可避免被解析为范围操作符,例如掩码'.0..9'会同时匹配.和0-9的所有数字。
内容的提问来源于stack exchange,提问作者mickmackusa
相关产品推荐
相关产品推荐

