博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
30秒的PHP代码片段(3)字符串-String & 函数-Function
阅读量:5952 次
发布时间:2019-06-19

本文共 5002 字,大约阅读时间需要 16 分钟。

本文来自GitHub开源项目

30秒的PHP代码片段

clipboard.png

精选的有用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

返回参数startend中字符串之间的第一个字符串。

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'); // trueisAnagram('fuckme', 'fuckyou'); // false

isLowerCase

如果给定字符串是小写的,则返回true,否则返回false

function isLowerCase($string){    return $string === strtolower($string);}

Examples

isLowerCase('Morning shows the day!'); // falseisLowerCase('hello'); // true

isUpperCase

如果给定字符串为大写,则返回true,否则返回false

function isUpperCase($string){    return $string === strtoupper($string);}

Examples

isUpperCase('MORNING SHOWS THE DAY!'); // trueisUpperCase('qUick Fox'); // false

palindrome

如果给定字符串是回文,则返回true,否则返回false

回文,顾名思义,即从前往后读和从后往前读是相等的
function palindrome($string){    return strrev($string) === (string) $string;}

Examples

palindrome('racecar'); // truepalindrome(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查找字符串中第一个出现的子字符串的位置。返回truefalse

function isContains($string, $needle){    return strpos($string, $needle);}

Examples

isContains('This is an example string', 'example'); // trueisContains('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;        }    );}
...为可变数量的参数,

Examples

$compose = compose(    // add 2    function ($x) {        return $x + 2;    },    // multiply 4    function ($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)); // 15var_dump($once(20, 10)); // null

variadicFunction(变长参数函数)

变长参数函数允许使用者捕获一个函数的可变数量的参数。函数接受任意数量的变量来执行代码。它使用for循环遍历参数。

function variadicFunction($operands){    $sum = 0;    foreach($operands as $singleOperand) {        $sum += $singleOperand;    }    return $sum;}

Examples

variadicFunction([1, 2]); // 3variadicFunction([1, 2, 3, 4]); // 10

相关文章:

转载地址:http://ljoxx.baihongyu.com/

你可能感兴趣的文章
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
nginc+memcache
查看>>
linux下crontab实现定时服务详解
查看>>
Numpy中的random模块中的seed方法的作用
查看>>
关于jsb中js与c++的相互调用
查看>>
POJ-2251 Dungeon Master
查看>>
tortoisesvn的安装
查看>>
URAL 1353 Milliard Vasya's Function DP
查看>>
速读《构建之法:现代软件工程》提问
查看>>
Android onclicklistener中使用外部类变量时为什么需要final修饰【转】
查看>>
django中聚合aggregate和annotate GROUP BY的使用方法
查看>>
TFS简介
查看>>