點我跳轉php
精選的有用PHP片斷集合,您能夠在30秒或更短的時間內理解這些片斷。
判斷字符串是否以指定後綴結尾,若是以指定後綴結尾返回true
,不然返回false
。git
function endsWith($haystack, $needle) { return strrpos($haystack, $needle) === (strlen($haystack) - strlen($needle)); }
Examplesgithub
endsWith('Hi, this is me', 'me'); // true
返回參數start
和end
中字符串之間的第一個字符串。正則表達式
function firstStringBetween($haystack, $start, $end) { return trim(strstr(strstr($haystack, $start), $end, true), $start . $end); }
Examplessegmentfault
firstStringBetween('This is a [custom] string', '[', ']'); // custom
檢查一個字符串是不是另外一個字符串的變位元(不區分大小寫,忽略空格、標點符號和特殊字符)。api
就是所謂的字謎
function isAnagram($string1, $string2) { return count_chars($string1, 1) === count_chars($string2, 1); }
Examples數組
isAnagram('fuck', 'fcuk'); // true isAnagram('fuckme', 'fuckyou'); // false
若是給定字符串是小寫的,則返回true
,不然返回false
。緩存
function isLowerCase($string) { return $string === strtolower($string); }
Examplesapp
isLowerCase('Morning shows the day!'); // false isLowerCase('hello'); // true
若是給定字符串爲大寫,則返回true
,不然返回false
。函數
function isUpperCase($string) { return $string === strtoupper($string); }
Examples
isUpperCase('MORNING SHOWS THE DAY!'); // true isUpperCase('qUick Fox'); // false
若是給定字符串是迴文,則返回true
,不然返回false
。
迴文,顧名思義,即從前日後讀和從後往前讀是相等的
function palindrome($string) { return strrev($string) === (string) $string; }
Examples
palindrome('racecar'); // true palindrome(2221222); // true
檢查字符串是不是以指定子字符串開頭,若是是則返回true
,不然返回false
。
function startsWith($haystack, $needle) { return strpos($haystack, $needle) === 0; }
Examples
startsWith('Hi, this is me', 'Hi'); // true
返回給定字符串中的元音數。使用正則表達式來計算字符串中元音(A, E, I, O, U)
的數量。
function countVowels($string) { preg_match_all('/[aeiou]/i', $string, $matches); return count($matches[0]); }
Examples
countVowels('sampleInput'); // 4
使字符串的第一個字母去大寫。對字符串的第一個字母進行無頭化,而後將其與字符串的其餘部分相加。省略upperRest
參數以保持字符串的其他部分完整,或將其設置爲true
以轉換爲大寫。
function decapitalize($string, $upperRest = false) { return lcfirst($upperRest ? strtoupper($string) : $string); }
Examples
decapitalize('FooBar'); // 'fooBar'
檢查給定字符串輸入中是否存在單詞或者子字符串。使用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
返回一個將多個函數組合成單個可調用函數的新函數。
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 2 function ($x) { return $x + 2; }, // multiply 4 function ($x) { return $x * 4; } ); $compose(3); // 20
建立一個會緩存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]
把函數與傳遞給他的參數相結合,產生一個新的函數。
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
只能調用一個函數一次。
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
變長參數函數容許使用者捕獲一個函數的可變數量的參數。函數接受任意數量的變量來執行代碼。它使用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