前端向後臺的華麗轉身 — PHP基礎篇

来源:http://www.cnblogs.com/wk1102/archive/2017/06/04/6941147.html
-Advertisement-
Play Games

這一次,本K帶大家來看一下關於PHP中數組、字元串的一些註意事項和函數(方法)。 一、PHP中的數組 (一)PHP中的數組簡介 數組類型是PHP兩種複合數據類型之一。根據下標的不同,可以將PHP中的數組分成關聯數組和索引數組:前者指下標為字元串格式,每個下標字元串與數組的值一一對應;後者下標為數字, ...


這一次,本K帶大家來看一下關於PHP中數組、字元串的一些註意事項和函數(方法)。

一、PHP中的數組

(一)PHP中的數組簡介

      數組類型是PHP兩種複合數據類型之一。根據下標的不同,可以將PHP中的數組分成關聯數組索引數組:前者指下標為字元串格式,每個下標字元串與數組的值一一對應;後者下標為數字,與JS中的數組下標相同,但在一些規則上與JS相差甚遠(後述)。

      關於關聯數組與索引數組,以及其與JS中數組的某些不同,有如下五條大致可以概括:

  1、數組中,可以同時存在索引數組和關聯數組

    array(1,2,3,"four"=>4);

  2、數組中,所有的索引數組,如果不加指定,會去掉關聯項,預設增長(即關聯數組不占索引位)

    array(1,2,3,"four"=>4,5,6); --> 1,2,3,5,6的索引分別為0 1 2 3 4

  3、如果關聯數組的key,是純十進位整數字元串,則會將此數字轉為索引數組的索引值

    array(1,2,3,"9"=>4); --> 1 2 3 4 的索引分別為 0 1 2 9

  4、如果手動指定關聯數組的key,索引數組的下標,如果與前面已有的key或下標重覆,則後指定的值會覆蓋之前的值

    array(1,2,"one"=>5,"one"=>6) --> 列印數組為 1 2 "one"=>6

  5、如果手動指定索引數組下標,則後續自增長下標,會按照之前下標最大值,依次增長

    array(1,2,3,"9"=>4,5); --> 1 2 3 4 5 的索引分別為 0 1 2 9 10

      其次,是PHP中數組的聲明方式。PHP中的數組聲明方式有三種(如下列代碼),分別是直接賦值聲明、array聲明、[]聲明。需要註意的是,第三種聲明方式實在PHP5.4版本以後才加入進來的,使用時一定要先核對好所使用的PHP版本。

      

$arr[] = 4;  // 直接賦值聲明
$arr = [1,2,3,4]; //[]聲明 
$arr = array(1,2,3,4); //array聲明

      PHP中數組的遍歷主要有4種方式,分別是使用for迴圈遍曆數組、foreach迴圈遍曆數組、使用list() each() while遍曆數組、使用數組指針遍曆數組。詳細方法K會在另一篇博文中講述,敬請期待。

      最後,是PHP數組涉及到的幾個超全局數組。所謂超全局,就是可以在任何地方、任何作用域不用聲明,直接可以使用的幾個系統數組,其存在是因為PHP作用域中變數範圍限制(PHP這點真的坑)。下麵一段筆記代碼,給大家做個參考。

/*
     * 【超 全局 數組】
     * 超全局數組、超全局變數、預定義數組、預定義變數 --> 說的都是它
     * PHP給我們提供了一組包含強大功能的超全局數組。可以在任何地方、任何作用域不需聲明,直接使用!!不受任何作用域限制。
     * 
        1  伺服器變數: $_SERVER
     * 返回包含瀏覽器頭信息,路徑,腳本以及伺服器系統等各種信息!
        2  環境變數:$_ENV
     * 將系統環境變數,轉變為PHP中的數組。就是$_ENV;
     * PHP預設是關閉此全局數組的,如果需要使用,需修改php.ini溫江中的variable_order="GPSC",改為EGPSC;
     * 但是,修改後會有系統性能損失,官方並不推薦使用。
     * 可以使用getenv()函數取代全局變數,取出每個系統環境變數的值。
     * phpinfo();函數,包含了有關PHP的各種信息,其中ENVIROMENT板塊就是系統環境變數,可以使用getevn();取出其中的每一個值。
        !!!!3  HTTP GET變數:$_GET
     * 獲取前臺通過get方式提交的數據
        !!!!4  HHTP POST變數:$_POST
     * 獲取前臺通過post方式提交的數據
        5  request變數:$_REQUEST
     * 包括了$_GET/$_POST/$_COOKIE三者
     * 由於可能同時包含get post,可能導致鍵衝突,並且效率也不高,所以不常使用!!!
        6  HTTP文件上傳變數:$_FILES
     * 通過HTTP POST方式上傳到當前腳本的項目的數組
        7  HTTP Cookies:$_COOKIE
     * 取到頁面中的cookie信息
        !!!!8  Session變數:$_SESSION
     * 取到保存在session中的信息
        9  Global變數:$GLOBALS
     * 包含上述8個全局數組
     * 還可以給$GLOBALS數組追加下標,創建全局變數
     */

(二)PHP數組中的常用函數

      談到PHP中數組的函數,首先需要給各位從JS轉來的同志們提醒一下,PHP中的數組的“函數”這種叫法,跟JS中數組的“方法”是一樣的,都是指對數組進行處理的行為。函數這一部分因其內容的龐大性,首先推薦大家去看一下幫助文檔(http://www.w3school.com.cn/php/index.asp)。下麵是K記錄的關於PHP中數組函數的一些筆記,大家可以自行粘貼至編輯器上取消/設置註釋來直接體驗。

$arr = ["one"=>1,4,7,"9"=>10,"haha"=>"haha",4];
    
    // 返回數組所有的值(數組)
    var_dump(array_values($arr));
    
    // 返回數組所有的鍵(數組)
    var_dump(array_keys($arr));
    
    // 檢測數組中是否包含某個值(布爾)
    #參數# 需要查詢的值,數組[,true(===)/false(==)]
    var_dump(in_array(1,$arr,true));
    
    // 交換數組中的鍵和值(數組)
    var_dump(array_flip($arr));
    
    // 翻轉數組(數組)
    #參數# 數組[,true(保留原有索引數組的下標與值的匹配)/false(只翻轉值,鍵不保留)] 
    #無論ture/false,都不會影響關聯數組,關聯數組總會保留#
    var_dump(array_reverse($arr,TRUE));
    
    // 統計數組元素個數(整形)
    var_dump(count($arr,0));
    
    // 統計數組中每個值出現的次數(數組)
    var_dump(array_count_values($arr));
    #    !!不藉助系統函數實現array_count_values的功能
    /* 思路
     * 1、有一個空數組:鍵 => 原數組的值 值 => 原數組每個值出現的次數 
     * 2、遍歷原數組,取出原數組中的每一個值
     * 3、檢測取出的值是否在新數組中有一個同名的鍵
     *         如果有:說明找到了與現在新取值相重覆的值,那麼就把新數組中這個鍵對應的值+1;
     *         如果無:說明截止現在,還沒有與新取值重覆的項,那麼就在新數組中新建一個同名的鍵,並把值為1。
     */
/*    $arr1 = [0,2,5,7,9,4,2,1,5,7,1,0,1,1,1,1,1,2,4,4,5,7,7,4,3,2,4,6,8,5,3];
    $arr2 = array();
    foreach($arr1 as $key1=>$item1){
        $isHas = FALSE; // 標誌變數!!!
        foreach($arr2 as $key2=>$item2){
            if($key2==$item1){
                $arr2[$item1]++;
                $isHas = TRUE;
            }
        }
        if(!$isHas) $arr2[$item1]=1;
    }
    var_dump($arr2);*/
    
    // 移除數組中重覆的值
//    var_dump(array_unique($arr));

    //過濾數組中的每一個值
    /*
     * 不傳回調函數:過濾掉所有空值(0、""、null、false、"0"、[])
     * 傳回調函數:如下
     */
//    var_dump(array_filter($arr,function($num){
//        if($num>4){
//            return TRUE;
//        }else{
//            return FALSE;
//        }
//    }));
    
    //通過回調函數,對數組的每一個值,進行處理操作。
    //執行時,會給回調函數傳遞給兩個參數,分別是value key,然後可以在回調函數中,對值和鍵進行處理!
    //但是,牽扯到修改值的時候,必須要傳遞地址!
//    var_dump(array_walk($funcname))

    //
    /*將數組的每個值交由回調函數進行映射處理
    array_map():第一個參數是一個回調函數,第二個參數起,是>=1個數組
    有幾個數組,可以給回調函數傳幾個參數,表示每一個數組的一個value;
    可以對返回的value進行處理,處理完後通過return返回,那麼新數組對應的值就是return回去的值*/
    $a =[1,2,3,4,5];
    $b =[1,2,3,4];
    var_dump(array_map(function($value1,$value2){
            return $value1+$value2;
        }, $a,$b));
        
    /*
     * array_walk與array_map的異同
     * 兩者都能遍曆數組,通過回調函數,重新處理數組的每一個值
     * 不同點
     * 1、walk只能傳一個數組,回調函數接受這個數組的值和鍵;map可以傳多個數組,回調函數接受每個數組的值
     * 2、walk直接修改原數組;map不修改原數組,將新數組返回
     * 3、walk可以給回調函數傳遞一個其餘參數;map只能傳數組的值
     * 4、處理方式上,walk如果需要改掉原數組的值,需在回調函數中傳遞地址,直接修改變數的值;map是通過將新的值,用return返回,即可修改新數組的值。
     */
    /*
     * 可以傳入第二個參數,控制以何排序。第二個參數傳1,表示按照數字排序;傳2,表示按照ascii排序;預設自動檢測
    sort -- 對數組排序(升序)
    rsort -- 對數組逆向排序(降序)
    usort --  使用用戶自定義的比較函數對數組中的值進行排序
     * 下述三個函數常用於關聯數組排序,用法同上
    asort -- 對數組進行排序並保持索引關係(關聯數組排序)
    arsort --  對數組進行逆向排序並保持索引關係 
    uasort --  用戶自定義的比較函數對數組進行排序並保持索引關聯
     * 
    ksort -- 對數組按照鍵名排序
    krsort -- 對數組按照鍵名逆向排序
    uksort --  使用用戶自定義的比較函數對數組中的鍵名進行排序
     * 自然排序,數字按照0-9,字母按照a-z進行排序
     * 下麵兩個函數,都會按照自然排序,並且排序時會保留鍵值關聯
    natsort --  用“自然排序”演算法對數組排序
    natcasesort --  用“自然排序”演算法對數組不區分大小寫字母排序 
     * 對多個數組或多維數組進行排序。
     * 第一個參數:第一個數組必選,之後都是可選參數
     * SORT_STRING/SORT_NUMBERIC按照字元串還是數字
     * SORT_DESC/SORT_ASC升降序排列
     * 
     * 排序規則,先排第一個數組,之後的數組,按照與第一個數組對應的關係,一列一列的移動
     * 
     * 如果對多個數組排序,需保持多個數組長度一致
    array_multisort -- 對多個數組或多維數組進行排序
     */
    
    $arr = [1,2,3,4,9,7,6,10,22];
    
//    sort($arr);

//    rsort($arr);

//    usort($arr,function($a,$b){#同JS中數組sort
//        return -$a+$b;
//    });

//    asort($arr);

    /*[不更改原數組]
     * array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
     * 參數一: 數組,必選
     * 參數二:從第幾位開始截選,必選,負數表示從右邊第幾位(按照數組的預設順序,包含關聯和索引,而非下標)
     * 參數三:截取長度,可選,預設全選
     * 參數四:表示是否保持鍵值關聯,可選,預設索引重拍,為false,true為保持關聯
     * */
    
//    $arr1 = array_slice($arr,3,2);
//    var_dump($arr1);
    
    /*[更改原數組]
     * array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] )
     * 返回值:被刪掉的數組
     * 參數一:數組的地址,會改變原數組
     * 參數二:從第幾位開始刪或替換
     * 參數三:刪除或替換的長度
     * 參數四:為空表示刪除操作,傳入內容表示替換操作的新值
     * */
    $arr2 = array_splice($arr,4);        
    var_dump($arr2);
    
    /*
     * array_combine — 創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值 
     * 參數一:作為鍵的數組
     * 參數二:作為值的數組
     * 【兩個數組必須保持一致,否則警告,返回false】
     */
     
    /* 合併多個數組
     * array array_merge ( array $array1 [, array $... ] )
     * 合併多個數組,如果多個數組中,出現同名的關聯鍵值,則後面的會覆蓋前面的
     * */
     
    /* 兩個數組取交集
     * array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
     * 多個數組取交集,結果會保留第一個數組的鍵值關聯比配
     * */
     
    /* 兩個數組去差集
     * array array_diff ( array $array1 , array $array2 [, array $... ] )
     * 取出多個數組中,在第一個數組中包含,但在其他數組中不包含的值,保留第一個數組的鍵值關聯
     * */
    
    /*
     * mixed array_pop ( array &$array )//刪除數組最後一個值,且返回這個值
     * int array_push ( array &$array , mixed $var [, mixed $... ] )//數組的最後放入一到多個值,返回處理後數組的元素個數
     * 
     *     mixed array_shift ( array &$array )//刪除數組第一個值,返回這個值
     * int array_unshift ( array &$array , mixed $var [, mixed $... ] )//數組開頭放入一到多個值,返回處理之後的數組元素個數
     * */
     
    /*
     * mixed array_rand ( array $input [, int $num_req = 1 ] )
     * 隨機抽取數組中的一到多個鍵名,二參數為空,表示抽一個,傳入數子表示抽幾個
     * */
     
    /*
     * bool shuffle ( array &$array )
     * 隨機打亂數組順序,直接修改原數組
     * */
    

二、PHP中的字元串

(一)PHP中的字元串簡介

      PHP中的字元串是PHP四大基礎數據類型之一。

      首先,來跟大家談一下PHP中字元串的聲明方式。PHP中字元串的聲明方式有三種,分別是通過""、''、標識符來進行聲明(詳述可見http://www.cnblogs.com/wk1102/p/6886041.html)。

      其次,來跟大家以代碼筆記的形式著重說一下PHP中的各種輸出函數,筆記如下。

    /*
     * 【各種輸出函數】
     * 1、echo(純輸出,無返回):直接將內容輸出。可以是函數用法,也可以是指令用法;指令用法可以列印多個參數(逗號分割),函數用法只能列印一個參數。
     * 2、print(基本不用):有函數寫法與指令寫法,但兩個都不能傳多個參數;有返回值,返回值總是為true。
     * 3、print_r:列印數組和對象時,會用一定的格式顯示鍵和值的匹配。print_r列印數組時,會將數組指針移向最後一位。
     * 4、var_dump:調試專用,顯示列印的類型、值等信息,列印數組對象時,會縮進顯示鍵值匹配,可以傳入多個參數,同時列印。
     * 5、die:等同於exit,輸出信息並且結束當前腳本,可以不輸出信息。
     * 6、printf:列印內容並將變數進行格式化輸出。第一個參數:需要列印的字元串內容,可以帶多個占位符;第二到多個參數:與占位符一一對應的變數。將後面的變數按照占位符的格式要求依次輸出。
     * 7、sprintf:使用同printf一樣,只不過不是輸出語句,而是將轉換之後的結果賦給一個變數。
     * 
     * [常用占位符]
        %%    返回百分比符號
        %b    二進位數
        %c    依照ASCII值的字元
        %d    帶符號十進位數
        %e        可續計數法(如1.5e3)
        %u    無符號十進位數
        %f或%F     浮點數  
     * -->  浮點數,預設保留六位小數
     * 百分號和f之間可以插入數字表示精確程度。
     * 數子的整數部分,表示精確的總寬度(整數+小數+小數點的總位數)。
     * 數字的小數部分表示保留幾位小數,進行四捨五入保留。
     * 如果設置的寬度小於實際寬度,設置無效;如果設置的寬度大於實際寬度,左邊空格補位。
     * 例如:$num = 10.12345;
     * printf("123%10.2f",$num);   -->           10.12
     * printf("123%010.2f",$num); -->  0000010.12
        %o    八進位數
        %s    字元串
        %x或%X  十六進位數
     */

(二)PHP中的常用函數

      這裡,K的建議同上述數組是一樣的,同樣推薦大家首先閱讀幫助文檔(http://www.w3school.com.cn/php/index.asp)。下麵,K依然以代碼筆記的方式來給同志們介紹一下PHP中的常用函數。

    /*
     * trim():刪除字元串兩端的空格;
     * ltrim():刪除字元串左端的空格; 
     * rtrim():刪除字元串右端的空格; 
     * 
     * 可以傳入第二個參數,表示刪除兩邊的相關字元。
     * 從字元串兩邊開始依次向內查找第二個參數中出現的字元,只要發現就刪除,直到遇到第一個沒有出現的字元為止。
     * 第二個字元常寫為 " \t\n\r\0\x0B",用於把各種空格相關的符號全都刪掉。
        " " (ASCII 32 (0x20)),普通空格符。  
        "\t" (ASCII 9 (0x09)),製表符。  
        "\n" (ASCII 10 (0x0A)),換行符。  
        "\r" (ASCII 13 (0x0D)),回車符。  
        "\0" (ASCII 0 (0x00)),空位元組符。  
        "\x0B" (ASCII 11 (0x0B)),垂直製表符。
     * 
     * */
    
    $str = "  1  2  3  4  ";
    echo $str."\n";    
    echo ltrim($str)."\n";
    echo rtrim($str)."\n";
    echo trim($str)."\n";
    echo trim($str," 43")."\n";
    
    /*
     * str_pad():將字元串填充到指定長度;
     * 參數一:需要填充的字元串,必選。
     * 參數二:需要將字元串填充到多長,必選。
     * --->如果長度小於等於字元串,則不會發生任何作用。
     * 參數三:需要填充的文本,可選。
     * --->預設用空格填充。
     * 參數四:在字元串的哪邊填充,可選。
     * --->STR_PAD_BOTH:2
     * --->STR_PAD_LEFT:0
     * --->STR_PAD_RIGHT:1
     * --->預設填充在右邊,如果選BOTH,則先從右邊開始填。
     */
     
    $str1 = "abcd";
    
    echo str_pad($str1, 11,"12",STR_PAD_BOTH);
    echo str_pad($str1, 11,"12",STR_PAD_LEFT);
    echo str_pad($str1, 11,"12",STR_PAD_RIGHT);
    
    /*
     * strtolower():將所有字元轉成小寫
     * strtoupper():將所有字元轉成大寫
     * 上述兩個常用於不區分大小寫比對。
     * 
     * ucfirst():將字元串首字母轉成大寫
     * ucwords():將字元串每一個詞首字母轉成大寫
     * 後兩個只負責轉首字母,並不管其他字母的大小寫,如果只需要首字母大寫,通常配合strtolower()先將字母轉成小寫。
     * */
    
    
    /* 與HTML相關的函數:
     * 1、nl2br():將字元串中的所有換行符,轉為<br>
     * 2、htmlspecialchars():將HTML中的符號,轉換為實體內容。
     *       & :&amp;        ":&quot;
     *      ':&#039;     <:&lt; 
     *      >:&gt;      空格:&nbsp;
     * 轉成特殊字元後,無需再轉回,瀏覽器會自動解析為對應的標簽符號。
     * 3.將字元串中的所有HTML標簽刪除;
     * 參數1:需要過濾HTML標簽的字元串;
     * 參數2:允許存在的HTML標簽:strip_tags($str,"<b><s><u>");只允許str這個字元串中,存在<b><s><u>三個標簽,其他的全部刪除。
     * 
     * */
/*【常用字元串函數】
 *1.strrev($str):將字元串翻轉;"12345"-->"54321"; 
 *2.strlen($str) :獲取字元串字元個數,中文=三個字元
 *mb_strlen($str):測量多位元組字元串的長度,不論中英文均算一個長度;
 * {PHP中,很多字元串函數,都有“mb_”的首碼,專門用於操作中文多位元組字元串}
 *3.number_format():將一個浮點數,要求格式化為一個字元串。
 *             參數1:需要格式化的浮點數;必選。
 *             參數2:保留幾位小數(四捨五入),預設不保留;
 *             參數3:小數點的顯示符號,預設為“.”;
 *             參數4:千位符的顯示符號:預設為“,”;
 *4.md5()/sha1():分別使用md5加密演算法以及sha1加密演算法對字元串進行加密操作;
 * */

$str="abcdefg哈哈哈";//一個漢字三個字元,一個字元一個字元翻轉;
echo strrev($str);
echo "<br/>";
echo strlen($str);//字元串長度16
echo "<br/>";
echo mb_strlen($str);//字元串長度10
echo "<br/>";
echo number_format(12399.4567,4,"/","-");
echo "<br/>";
echo md5($str);
echo "<br/>";
echo sha1($str);
echo "<br/>";
echo sha1($str)=="527e8bad76c863b8903c51f7eedad006678d5f96";
/*【字元串的比較】
 * 1.可以用比較運算符比較:
 * < > ==:如果兩邊都是字元串,則比較首字母ASCII值,
 *        如果一邊是數字,則將字元串轉為數字後再比對!
 *(重要) 2.strcmp("$str1","$str2"):比較兩個字元串,區分大小寫;$str1>$str2-->1;$str1<$str2-->-1  $str1==$str2-->0
 * 3.strncmp("$str1","$str2",int):比較方式與strcmp完全相同,只是多了一個必填的參數3,表示比較字元串的長度,strncmp("Asdsa", "adsa",2),只比較前兩個字元串的前兩個字元,如果比較漢字字元串,一個漢字占三個字元;
 *(重要) 4.strcasecmp ("$str1","$str2")比較全串字元串,不區分大小寫;
 * 5.strnatcmp ("$str1","$str2"):將字元串按照自然排序演算法進行排序比對;
 *   strnatcmp ("10","2"):10>2,返回1;
 *   strcmp("10", "2"):按照ASCII排序,1<2,返回-1;兩者相等時都=0,沒有任何差別。
 *6. similar_text():返回兩個字元串的相似度(兩個字元串匹配字元的數目);
 * */
 var_dump("a"<1);//"a"-->0;
 var_dump(strcmp("A", "a"));//-1
 var_dump(strcmp("5", "5"));//0
 var_dump(strncmp("Aaer", "Aacc",2));//0
 var_dump(strncmp("張與", "張三",2));//0
 var_dump(strcasecmp ("abcd","ABCD"));//0
 var_dump(strnatcmp ("i10","i2"));//1
 var_dump(similar_text("123","234"));//相同字元的長度
 /*【常用字元串操作函數】
  * 1.explode():使用指定分隔符,將字元串分隔為數組;
  *  參數1:使用什麼分隔符;
  *  參數2:需要分隔的字元串;
  *  參數3:可選,將字元串最多分為幾份,如果小於實際分數,則前n-1正常分,最後一個包含所有剩餘字元串。
  * 2.preg_split():通過一個正則表達式分隔字元串,參數同上,第一個參數為正則表達式
  * 3.var_dump(str_split("hahah",2))--->["ha","ha","h"]
  * */
 var_dump(explode(",","s,t,y,u",3));
 var_dump(preg_split("/[\s,]+/","asdh adcjk, asjdi")); 
 var_dump(str_split("hahah",2));
 var_dump(mb_split("/[\w]{1}+/","sdsd,t,h"));//不好使
 /*
  * 3.implode() : 將一個一維數組的值轉化為字元串
  * 4.substr():截取的字元串;
  *   第一個參數:需要截取的字元串;
  *   第二個參數:從哪個字元開始截取;
  *   第三個參數:需要截取的字元串長度(預設截取到最後)
  * 5.mb_substr():用於截取中文字元串,一個漢字=1個字元;
  *(重要)strstr():別名strchr():查找並返回字元串,是否包含某個子串,如果沒有找到返回false
  *   參數1:被查找的字元串,必選;
  *   參數2:需要查找的子串,必選;
  *   參數3:true/false:返回子串前面的部分;返回子串及子串的所有字元串,預設;
  * 6.stristr():功能同上,不區分大小寫,
  * 7.strrchr():取到需查找字元在字元串中最後一次出現的位置;
  * 第一個參數:被查找的字元串;
  * 第二個參數:需要查找的字元,如果第二個參數是字元串,則會使用字元串的第一個字元,如果找到,返回該字元串最後一次出現的位置,往後的部分。
  * */
  var_dump(implode("-",["a","b","c"]));//--->"a-b-c";
  var_dump(substr("12345", 2,3));
  var_dump(mb_substr("1234哈哈", 2,4));
  var_dump(strstr("1234", "23",true));
  var_dump(stristr("123哈哈4", "哈",true));
 var_dump(strrchr("ABC123ABC456","AdBC"));
 /* 【字元串查找】
  * 1.strpos() : 返回某個字元串,查找字元串首次出現的位置;
  *   參數1:被查找的字元串;
  *   參數2:需要查找的子串;
  *   參數3:從第幾個位置開始查找;
  * 2.strrpos():返回某個字元串,查找字元串最後出現的位置;
  * 3.stripos():不區分大小寫。返回第一次出現的位置;
  * 4.strripos():不區分大小寫。返回最後一次出現的位置;
  * */
 var_dump(strpos("123AxhBzABC","ABC",1));//8
 var_dump(strripos("123AxhBzABC","abc"));//8
 var_dump(strrpos("123AxhBzABC","ABC",1));//8
 var_dump(stripos("123AxhBzABC","abc",1));//8
 /*【字元串替換】
  * str_replace():將字元串中指定的部分用指定內容替換;
  *    參數1:被替換部分,可以是數組也可以是字元串;
  *    參數2:新內容,可以是數組也可以是字元串;
  *    參數3:原字元串;
  * 共分為三類:1.第一個字元串,第二個字元串;
  *          2.第一個數組,第二個數組:將兩個數組一一進行映射替換;
  * ①兩個數組長度相等;將兩個數組一一進行映射替換;
  * ②第一個數組>第二個數組:第一個數組剩餘部分用“”替換(即刪了);
  * ③第一個數組<第二個數組:第二個數組剩餘的部分不用;
  *          3.第一個數組,第二個字元串:數組的每一個都替換為字元串;
  * */
  var_dump(str_replace("e",",","jasbdheead"));
  var_dump(str_replace(["e","a","d"],",","jasbdheead"));
  var_dump(str_replace(["e","a","d"],[",","/",""],"jasbdheead"));
  var_dump(str_replace(["e","a","d"],[",","/"],"jasbdheead"));
  var_dump(str_replace(["e","a"],[",","/","-"],"jasbdheead"));
  var_dump(str_replace(["e","a","d"],"/","jasbdheead"));

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、定義:相同數據類型的數據的組合。 不使用數組的定義方式: 使用一維數組的定義方式: 1、靜態初始化:在聲明並初始化數組與給數組相應的元素賦值操作同時進行; int[] scores = new int[]{72,90,59}; 2、動態初始化:在聲明並初始化數組與給數組相應的元素賦值操作分開進行 ...
  • 題目鏈接 Problem Description Using regular expression to define a numeric string is a very common thing. Generally, use the shape as follows:(0|9|7) (5|6) ...
  • 1 //1、核心代碼遞歸實現組裝數形數據 2 public String getResourceTreeToJson() { 3 return this.createTreeJson(findAll());//findAll()是全查select * from tableName 4 } 5 6 /... ...
  • 一、 什麼是java,它包含哪些技術 1、 java是一種面向對象的高級編程語言 2、 java包括 a) javase(java基礎) b) javaee(java企業級應用) 二、 用記事本編寫java程式的3個步驟 1、 創建擴展名為.java的java源文件 2、 編譯java源文件,產生擴 ...
  • PowerShell的一個重中之重的功能就是管道(pipeline),本文從淺入深,一步一步詳解管道的使用方法和例子,來看看有沒有你所不知道的吧,如果全知道,恭喜你已經很厲害啦——適用於所有PowerShell應用小白與技術老鳥。另外歡迎各位技術大牛來補充討論學習~ 1. 管道(pipeline)是 ...
  • 繼續上一篇文章的內容,上一篇文章中已經將url管理器和下載器寫好了。接下來就是url解析器,總的來說這個模塊是幾個模塊中比較難的。因為通過下載器下載完頁面之後,我們雖然得到了頁面,但是這並不是我們想要的結果。而且由於頁面的代碼很多,我們很難去裡面找到自己想要的數據。所幸,我們下載的是html頁面,它 ...
  • 如此簡單(不安全)的登錄表單已經不多見了。字幕庫的登錄表單如下所示,其中省去了無關緊要的內容: 通過抓包分析,可以發現用戶名和密碼都沒有被加密: 直接使用POST來模擬登錄: 成功登錄,分析返回頁面中的js代碼,發現有: 說明要跳轉到的頁面在id為href的超鏈接中: 獲取要跳轉到的頁面,然後嘗試打 ...
  • Provider(MessageProvider):生產者Consumer(MessageConsumer):消費者PTP:Point to Point,即點對點的消息模型Pub/Sub:Publish/Subscribe,即發佈/訂閱的消息模型Queue:隊列目標Topic:主題目標Connect ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...