30秒的PHP代码片段(3)字符串-String 函数-Function
本文来自GitHub开源项目
点我跳转
30秒的PHP代码片段
精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段。
字符串
endsWith
判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回true
,否则返回false
。
function endsWith($haystack, $needle)
{return strrpos($haystack, $needle) === (strlen($haystack) - strlen($needle));
}
Examples
endsWith('Hi, this is me', 'me'); // true
firstStringBetween
返回参数start
和end
中字符串之间的第一个字符串。
function firstStringBetween($haystack, $start, $end)
{return trim(strstr(strstr($haystack, $start), $end, true), $start . $end);
}
Examples
firstStringBetween('This is a [custom] string', '[', ']'); // custom
isAnagram
检查一个字符串是否是另一个字符串的变位元(不区分大小写,忽略空格、标点符号和特殊字符)。
就是所谓的字谜
function isAnagram($string1, $string2)
{return count_chars($string1, 1) === count_chars($string2, 1);
}
Examples
isAnagram('fuck', 'fcuk'); // true
isAnagram('fuckme', 'fuckyou'); // false
isLowerCase
如果给定字符串是小写的,则返回true
,否则返回false
。
function isLowerCase($string)
{return $string === strtolower($string);
}
Examples
isLowerCase('Morning shows the day!'); // false
isLowerCase('hello'); // true
isUpperCase
如果给定字符串为大写,则返回true
,否则返回false
。
function isUpperCase($string)
{return $string === strtoupper($string);
}
Examples
isUpperCase('MORNING SHOWS THE DAY!'); // true
isUpperCase('qUick Fox'); // false
palindrome
如果给定字符串是回文,则返回true
,否则返回false
。
回文,顾名思义,即从前往后读和从后往前读是相等的
function palindrome($string)
{return strrev($string) === (string) $string;
}
Examples
palindrome('racecar'); // true
palindrome(2221222); // true
startsWith
检查字符串是否是以指定子字符串开头,如果是则返回true
,否则返回false
。
function startsWith($haystack, $needle)
{return strpos($haystack, $needle) === 0;
}
Examples
startsWith('Hi, this is me', 'Hi'); // true
countVowels
返回给定字符串中的元音数。使用正则表达式来计算字符串中元音(A, E, I, O, U)
的数量。
function countVowels($string)
{preg_match_all('/[aeiou]/i', $string, $matches);return count($matches[0]);
}
Examples
countVowels('sampleInput'); // 4
decapitalize
使字符串的第一个字母去大写。对字符串的第一个字母进行无头化,然后将其与字符串的其他部分相加。省略upperRest
参数以保持字符串的其余部分完整,或将其设置为true
以转换为大写。
function decapitalize($string, $upperRest = false)
{return lcfirst($upperRest ? strtoupper($string) : $string);
}
Examples
decapitalize('FooBar'); // 'fooBar'
isContains
检查给定字符串输入中是否存在单词或者子字符串。使用strpos
查找字符串中第一个出现的子字符串的位置。返回true
或false
。
function isContains($string, $needle)
{return strpos($string, $needle);
}
Examples
isContains('This is an example string', 'example'); // true
isContains('This is an example string', 'hello'); // false
函数
compose
返回一个将多个函数组合成单个可调用函数的新函数。
function compose(...$functions)
{return array_reduce($functions,function ($carry, $function) {return function ($x) use ($carry, $function) {return $function($carry($x));};},function ($x) {return $x;});
}
...
为可变数量的参数,http://php.net/manual/zh/func...
Examples
$compose = compose(// add 2function ($x) {return $x + 2;},// multiply 4function ($x) {return $x * 4;}
);
$compose(3); // 20
memoize
创建一个会缓存func
结果的函数,可以看做是全局函数。
function memoize($func)
{return function () use ($func) {static $cache = [];$args = func_get_args();$key = serialize($args);$cached = true;if (!isset($cache[$key])) {$cache[$key] = $func(...$args);$cached = false;}return ['result' => $cache[$key], 'cached' => $cached];};
}
Examples
$memoizedAdd = memoize(function ($num) {return $num + 10;}
);var_dump($memoizedAdd(5)); // ['result' => 15, 'cached' => false]
var_dump($memoizedAdd(6)); // ['result' => 16, 'cached' => false]
var_dump($memoizedAdd(5)); // ['result' => 15, 'cached' => true]
curry(柯里化)
把函数与传递给他的参数相结合,产生一个新的函数。
function curry($function)
{$accumulator = function ($arguments) use ($function, &$accumulator) {return function (...$args) use ($function, $arguments, $accumulator) {$arguments = array_merge($arguments, $args);$reflection = new ReflectionFunction($function);$totalArguments = $reflection->getNumberOfRequiredParameters();if ($totalArguments <= count($arguments)) {return $function(...$arguments);}return $accumulator($arguments);};};return $accumulator([]);
}
Examples
$curriedAdd = curry(function ($a, $b) {return $a + $b;}
);$add10 = $curriedAdd(10);
var_dump($add10(15)); // 25
once
只能调用一个函数一次。
function once($function)
{return function (...$args) use ($function) {static $called = false;if ($called) {return;}$called = true;return $function(...$args);};
}
Examples
$add = function ($a, $b) {return $a + $b;
};$once = once($add);var_dump($once(10, 5)); // 15
var_dump($once(20, 10)); // null
variadicFunction(变长参数函数)
变长参数函数允许使用者捕获一个函数的可变数量的参数。函数接受任意数量的变量来执行代码。它使用for
循环遍历参数。
function variadicFunction($operands)
{$sum = 0;foreach($operands as $singleOperand) {$sum += $singleOperand;}return $sum;
}
Examples
variadicFunction([1, 2]); // 3
variadicFunction([1, 2, 3, 4]); // 10
相关文章:
30秒的PHP代码片段(1)数组 - Array
30秒的PHP代码片段(2)数学 - Math
30秒的PHP代码片段(3)字符串-String 函数-Function相关推荐
- 30秒的PHP代码片段(2)数学 - Math
本文来自GitHub开源项目 点我跳转 30秒的PHP代码片段 精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段. 数学函数 average 返回两个或多个数字的平均值. funct ...
- 30秒的PHP代码片段(1)数组 - Array
本文来自GitHub开源项目 点我跳转 30秒的PHP代码片段 精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段. 排列 all 如果所提供的函数返回 true 的数量等于数组中成员 ...
- 30秒的PHP代码片段-MATH
本文来自GitHub开源项目 点我跳转 30秒的PHP代码片段 精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段. 数学函数 average 返回两个或多个数字的平均值. funct ...
- web简易计算器代码_30秒内便能学会的30个超实用Python代码片段
许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...
- 超实用的30 个简短的代码片段(一)
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:NicePython PS:如有需要Python学习资料的小伙伴可以加 ...
- 30秒内便能学会的30个超实用Python代码片段
许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...
- 第十一期:30秒内便能学会的30个实用Python代码片段
许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...
- 30个超实用Python代码片段
版权声明:本文为博主'读芯术'原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 原文链接:https://blog.csdn.net/duxinshuxiaobia ...
- 即学即用的30段Python实用代码
(图片付费下载自视觉中国) 原标题 | 30 Helpful Python Snippets That You Can Learn in 30 Seconds or Less 作 者 | Fatos ...
最新文章
- 播放此电影需要以下插件,但尚未安装: MPEG-4 AAC decoder
- R语言vtreat包自动处理dataframe的缺失值、使用分组的中位数来标准化数据列中每个数据的值(和中位数表连接并基于中位数进行数据标化)、计算数据列的中位数或者均值并进行数据标准化
- java中全大写字符_Java 大写字符串中的字符
- Opengl-光照-基本光照-投光物-多光源(现实世界的光可不只有太阳也并不只有一个)
- ×××梦 最近要开始研究Excel 2010
- 图解面试题:找出数组中重复的数字?
- Java 窗口菜单
- pyside6(1):Qt 资源系统和qrc文件使用
- BIOS设置图解教程 BIOS设置图解教程之AMI篇
- 分布式任务调度相关介绍
- Centos下查看和修改网卡Mac地址
- Python按照指定页数分割PDF文件
- Dubbo篇:基于Netty实现Dubbo协议编解码源码分析
- 技术源自洛克希德·马丁,光场XR眼镜FYR解析
- 音频倍速(变速不变调)的实现
- 【C#】xml解析对比XDocument和XmlDocument
- 异构信息网络 Heterogeneous information network (HIN)
- 古诗词的直译和韵译有什么区别?看看就知道了
- 基于pyskl的poseC3D训练自己的数据集
- oracle 12 c盘已共享,求助,12c使用iscsi作为共享存储的问题,数据不同步 - Oracle论坛 - 51CTO技术论坛_中国领先的IT技术社区...
热门文章
- 京瓷2010复印a4内容不全_百万畅销书活法的原点,稻盛和夫从未公开的京瓷秘籍...
- SAP零售行业解决方案初阶 1
- SAP MM 某项目上产品层次的设计
- 沈向洋回答吴恩达:我预见的2021
- 详细说说Transformer (超详细图解,一图胜千言)
- 「SAP技术」SAP MM ME2N报表能按‘order acknowledgement‘查询采购订单
- 是你的数据还不够强!谷歌大脑「数据增强」开源,大神QuocLe出品
- 「模型解读」从2D卷积到3D卷积,都有什么不一样
- 2019年上半年收集到的人工智能图神经网络干货文章
- 图像处理和模式识别等技术的快速发展大大地推动了机器视觉的发展