[PHP從小白到大牛]-015 PHP系統函數-字符串/數學/時間日期

系統函數

  • PHP自帶的函數, 能夠直接使用, 無需另外安裝

字符串函數

strlen

  • 用於獲取字符串長度
  • int strlen(string $str)
<?php

echo strlen('I love work !'); 
echo strlen(" "); // 空格也算一個長度
echo strlen("我愛工做"); // 中文 utf8 1:3, 不建議判斷中文的長度
複製代碼

strtolower

  • 用於將字符串變成小寫
<?php

$str = 'I love work !';

$str2 = strtolower($str);

var_dump($str); // 不會影響原來的字符串

var_dump($str2);
複製代碼

strtoupper

  • 將字符串轉成大寫
<?php

$str = 'I love work !';

$str2 = strtoupper($str);

var_dump($str);

var_dump($str2);
複製代碼

ucfirst

  • 將句子的首字母轉成大寫

ucwords

  • 將每一個單詞的首字母轉成大寫
<?php

$str = 'i love work !';

var_dump(ucfirst($str)); // I love work !
var_dump(ucwords($str)); // I Love Work !

// 原來的字符串沒有變
複製代碼

str_replace

  • 字符串替換, 區分大小寫
  • 若是找不見目標字符串, 原樣輸出
<?php

$str = "I love China China";

var_dump(str_replace("China", "USA", $str));

var_dump($str); // I love USA USA
複製代碼

str_ireplace

  • 字符串替換, 不區分大小寫
<?php

$str = "I love China China";

var_dump(str_ireplace("china", "USA", $str));
複製代碼

htmlspecialchars

  • 把預約義的字符, 轉成html實體
  • 第一個參數, 要處理的字符串
  • 第二個參數, 規定是否轉義引號
    • ENT_COMPAT 只編碼雙引號(默認)
    • ENT_QUOTES 編碼雙引號和單引號
    • ENT_NOQUOTES 不編碼任何引號

實體符號javascript

顯示結果 描述 實體名稱 實體編號
空格 &nbsp; &#160;
< 小於號 &lt; &#60;
> 大於號 &gt; &#62;
& 和號 &amp; &#38;
" 引號 &quot; &#34;
' 撇號 &apos; (IE不支持) &#39;
分(cent) &cent; &#162;
£ 鎊(pound) &pound; &#163;
¥ 元(yen) &yen; &#165;
歐元(euro) &euro; &#8364;
§ 小節 &sect; &#167;
© 版權(copyright) &copy; &#169;
® 註冊商標 &reg; &#174;
商標 &trade; &#8482;
× 乘號 &times; &#215;
÷ 除號 &divide; &#247;

完整的實體符號列表: www.w3school.com.cn/tags/html_r…php

<?php

$a =  "a>b,b<a,'a!=b";

echo htmlspecialchars($a,ENT_NOQUOTES);
複製代碼

ltrim

  • 刪除字符串左側的空白字符html

  • 空白字符包括java

  • \t \r " " \n
    複製代碼
<?php

$str = " \t\t\thello";

echo '#'.ltrim($str).'#';
echo "<br>";
echo '#'.$str.'#';
複製代碼

rtrim

  • 刪除右側的空白符
<?php

$str = "hello \t\t\t";

echo '#'.rtrim($str).'#';
echo "<br>";
echo '#'.$str.'#';
複製代碼

trim

  • 刪除兩側的空白符
<?php

$str = " \t\t\t\t hello \t\t\t";

echo '#'.trim($str).'#';
echo "<br>";
echo '#'.$str.'#';
複製代碼

strpos

  • 查找字符串在目標字符串中, 第一次出現的位置
<?php

$str = "I love China China";

echo strpos($str, "China"); // 7, 若是找不見, 是false
複製代碼

stripos

  • 查找字符串在目標字符串中, 第一次出現的位置, 不區分大小寫
<?php

$str = "I love China China";

var_dump(stripos($str, "china")); // 7
複製代碼

strrpos

  • 查找字符串在目標字符串中, 最後一次出現的位置, 區分大小寫
<?php

$str = "I love China China";

var_dump(strrpos($str, "China")); // 13
複製代碼

strripos

  • 查找字符串在目標字符串中, 最後一次出現的位置, 不區分大小寫
<?php

$str = "I love China china";

var_dump(strripos($str, "China")); // 13
複製代碼

substr

  • 截取字符串
  • 第一個參數 目標字符串
  • 第二個參數 起始位置, 從0開始, 負數表示倒數
  • 第三個參數 截取長度, 負數表示倒數
<?php

$str = "javascript";

echo substr($str, 0); // 沒有第三個參數, 默認截到末尾 javascript
echo "<br>";
echo substr($str, 3); // 沒有第三個參數, 默認截到末尾, 從第三個開始, ascript
echo "<br>";
echo substr($str, 1, 3); // 從第二個, 向後截取三個, ava
echo "<br>";
echo substr($str, 1, -3); // 從第二個, 截取到倒數第三個, avascr
echo "<br>";
echo substr($str, -6); // 從倒數第6個, 截取到結尾, script
echo "<br>";
echo substr($str, -6, 3); // 從倒數第6個, 日後截3個, scr
echo "<br>";
echo substr($str, -6, -2); // scr, 從倒數第6個, 截到倒數第三個,scri 
複製代碼

strstr

  • 搜索字符串在目標字符串中出現的位置, 返回餘下的部分,包括搜索的字符串. 多個匹配, 從第一個開始. 區分大小寫
<?php

$str = "javascript";

echo strstr($str, 'a'); // avascript
複製代碼

stristr

  • 搜索字符串在目標字符串中出現的位置, 返回餘下的部分,包括搜索的字符串. 多個匹配, 從第一個開始. 不區分大小寫
<?php

$str = "jAvascript";

echo stristr($str, 'a'); // Avascript
複製代碼

strrchr

  • 搜索字符串在目標字符串中, 最後一個出現的位置, 返回餘下的部分, 包括搜索字符串, 區分大小寫
<?php

$str = "javascript";

echo strrchr($str, 'a'); // ascript
複製代碼

strrev

  • 反轉字符串
<?php

$str = "abc";

echo strrev($str); // cba
複製代碼

md5

  • md5是一種加密算法, 使用該函數, 能夠返回字符串的md5值
  • md5是通常是32位長度
<?php

$str = "abc";

echo md5($str); // 900150983cd24fb0d6963f7d28e17f72
複製代碼

str_shuffle

  • 隨機打亂字符串
  • 能夠用於生成驗證碼
<?php

$str = "abcdefghijklmnopqrstuvwxyz1234567890";

echo substr(str_shuffle($str),0,4);
複製代碼

explode

  • 字符串轉數組
  • 第一個參數是分隔符
  • 第二個參數是字符串
  • 若是分隔符不存在, 字符串做爲數組的惟一的一個元素
<?php

$str = "I-love-work";

var_dump(explode(" ", $str)); // 
複製代碼

implode

  • 數組轉字符串
  • 第一個參數, 鏈接符
  • 第二個參數, 數組
<?php

$arr = ['I', 'love', 'work'];

echo implode(' ', $arr);
複製代碼

sprintf

  • 格式化字符串
<?php

$num = 5;

$address = "ShangHai";

// $str = "There are $num millions cars in $address";
// $str = 'There are '.$num.' millions cars in '.$address;
$str = "There are %d millions cars in %s";
$str1 = sprintf($str,$num,$address); 

echo $str1; // There are 5 millions cars in ShangHai
複製代碼
  • %d ==> 十進制數字
  • %s ==> 字符串
  • %f ==> 小數
  • %e ==> 科學計數法
  • %b ==> 二進制數字
  • %% ==> %
<?php

$num = 5;

$address = "ShangHai";

$price = 112345.6789;

// $str = "There are $num millions cars in $address";
// $str = 'There are '.$num.' millions cars in '.$address;
$str = "There are %d millions cars in %s, every car is ¥ %.2f";
$str1 = sprintf($str,$num,$address,$price); 

echo $str1; // There are 5 millions cars in ShangHai, every car is ¥ 112345.68
複製代碼

數學函數

floor

  • 實現向下取整

ceil

  • 實現向上取整

pow

  • 乘方運算
<?php

echo pow(2,3); // 8
echo "<br>";
echo 2**3; // 8
複製代碼

sqrt

  • 平方根
<?php

echo sqrt(3); // 1.7320508075689
複製代碼

max

  • 最大值
<?php

echo max([1,2,3,4]); // 4
echo max(1,2,3,4,4,6,4); // 6
複製代碼

min

  • 最小值

mt_rand

  • 生成一個隨機數
  • 參數一: 開始
  • 參數二: 結束
  • 包括開始和結束

round

  • 四捨五入

number_format

  • 使用千分位分隔符格式化數字
  • 第一個參數, 須要格式化的數字
  • 第二個參數, 若是是小數, 要保留幾位, 四捨五入
  • 第三個參數, 自定義小數點符號
  • 第四個參數, 自定義千分位分隔符的符號
echo number_format(100000.123456,2,"*","--"); // 100--000*1235
複製代碼

fmod

  • 浮點數取模/求餘
<?php

echo fmod(21.2, 6); // 3.2
echo "<br/>";
echo 21.2%6; // 3
複製代碼

時間日期函數

date

  • 格式化本地時間/日期
<?php
echo date('Y年m月d日 H時i分s秒'); // 獲取的時間, 比北京時間晚8個小時
複製代碼
  • Y==>年, 大寫4位年份, 小寫y2位年份算法

  • m==>月, 大寫英文單詞, 前三個字母縮寫, 小寫, 數字月份, 有前導零, n是沒有前導零, 大寫N, 星期數, 從1~7apache

  • d==>日, 月份中的第幾天, 有前導零, 大寫的D, 星期幾, 取前三個字母數組

  • H==>時, 小時, 有前導零, 24制, 小寫的h, 有前導零, 12小時制, 須要前面加上a(am/pm), 表示上午仍是下午, 大寫的A表示AM/PMbash

  • i==>分, 表示分鐘, 有前導零ide

  • s==>秒, 有前導零函數

  • 第一個參數, 格式化的字符串

  • 第二個參數, 時間戳, 若是不寫, 默認當前時間

  • 什麼是時間戳? 一個數字, 1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至如今的總秒數

date_default_timezone_set

  • 設置默認時區(只對當前php文件有效)
  • 返回布爾值, 設置成功true, 設置失敗false
  • 一個參數, 表示時區的字符串
  • 合法時區列表: www.php.net/manual/zh/timezones.php
<?php

date_default_timezone_set("Asia/Shanghai"); // 設置時區

var_dump(date('Y年m月d日 H時i分s秒'));
複製代碼

date_default_timezone_get

  • 獲取默認時區(取決於設置)
date_default_timezone_set('Asia/Shanghai');
echo date_default_timezone_get();

var_dump(date('Y年m月d日 H時i分s秒'));
複製代碼

也能夠經過修改配置文件, 來永久改變時區設置

  • 先找到php.ini, 以我電腦爲例, C:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php.ini

  • 搜索date.timezone

  • 須要重啓apache服務
  • 這樣的好處, 不用每一個文件都加上date_default_timezone_set()

time

  • 返回時間戳
<?php

var_dump(time()); // 獲取當前時間戳
複製代碼
<?php

echo date("當前時間: Y-m-d H:i:s",time());
echo "<br/>";
echo date("昨天的當前時間: Y-m-d H:i:s",time()-24*60*60);
複製代碼

strtotime

  • 字符串轉時間戳
  • 返回時間戳, int類型
  • 第二個參數, 是計算時間戳時的參考值, 不寫參考當前時間
<?php

echo date("當前時間: Y-m-d H:i:s",time());
echo "<br/>";
echo date("昨天的當前時間: Y-(intval(m)-1)-d H:i:s",time()-24*60*60);
echo "<br/>";

echo "昨天的當前時間: ".date("Y-m-d H:i:s",strtotime('-1 day'));
複製代碼
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
複製代碼

microtime

  • 返回時間戳和微秒數
  • 第一個參數, 布爾值, 若是是true, 則把毫秒和秒拼接起來, 默認是false, 顯示用空格分開的結果

uniqid

  • 生成惟一id
  • 第一個參數是前綴
<?php
var_dump(uniqid(microtime(true)*1000));
複製代碼

getdate

  • 獲取日期和時間信息

  • 參數: 時間戳

<?php

var_dump(getdate());
複製代碼

相關文章
相關標籤/搜索