9.4 字符串比較函數(shù)

9.4 字符串比較函數(shù)

PHP中,有多種方法可以對(duì)字符串進(jìn)行比較,除了可以直接使用條件運(yùn)算符(<, >, ==)加以比較外。
按字節(jié)進(jìn)行字符串的比較
strcmp();(整個(gè)比較是否相同)
strncmp();(指定比較長(zhǎng)度的字符串比較)
strcasecmp(); (不區(qū)分大小寫(xiě)的全串比較)

<?php   
    $userName = "Admin";                            //聲明一個(gè)字符串作為用戶(hù)名
    //if(strcasecmp($userName, “admin”) == 0) {     //不區(qū)分大小寫(xiě)地比較,相等返回0
    if( strcasecmp(strtolower($userName), strtolower(“admin”)) == 0 ) {  //采用統(tǒng)一小寫(xiě)后比較 
          echo "用戶(hù)名存在";
    }
    switch(strcmp($ userName, “admin")) {  //區(qū)分字符串中字母的大小寫(xiě)比較
          case 0:    echo "兩個(gè)字符串相等<br>";  break;             //兩個(gè)字符串相等則返回0 
          case 1:    echo "第一字串大于第二字串<br>";  break;  //第一個(gè)字符串大時(shí)則返回1
          case -1:   echo "第一字串小于第二字串<br>";  break;  //第一個(gè)字符串小時(shí)則返回-1
    }

strnatcmp — 使用自然排序算法比較字符串
格式:int strnatcmp ( string $str1 , string $str2 )
該函數(shù)實(shí)現(xiàn)了以人類(lèi)習(xí)慣對(duì)數(shù)字型字符串進(jìn)行排序的比較算法,這就是“自然順序”。注意該比較區(qū)分大小寫(xiě)。
與其他字符串比較函數(shù)類(lèi)似,如果 str1 小于 str2,返回負(fù)數(shù);如果 str1 大于 str2,返回正數(shù);二者相等則返回 0。

<?php
     $arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");

     echo “使用strcmp排順序后:\n";
     usort($arr1, "strcmp");
     print_r($arr1);
     //[0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png
     
     echo “\n 使用strnatcmp排序后:\n";
     usort($arr2, "strnatcmp");
     print_r($arr2);
     //[0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png 
?> 

equals.php

<?php
/*  1. 使用等號(hào)比較字符串(常見(jiàn))
 *
 *      注意: 如果是不區(qū)分大小寫(xiě)的進(jìn)行比較,兩個(gè)比較的字符串要么都轉(zhuǎn)成大寫(xiě), 要么都轉(zhuǎn)成小寫(xiě)
 *
 *
 */

    $str1 = "abc";
    $str2 = "Abc";

    if( strtoupper($str1) == strtoupper($str2) ) {
        echo "相等";
    } else {
        echo "不相等";
    }

strcasecmp.php

<?php
/*  1. 使用等號(hào)比較字符串(常見(jiàn))
 *
 *      注意: 如果是不區(qū)分大小寫(xiě)的進(jìn)行比較,兩個(gè)比較的字符串要么都轉(zhuǎn)成大寫(xiě), 要么都轉(zhuǎn)成小寫(xiě)
 *
 *
 */

    $str1 = "abc";
    $str2 = "Bbc";

    switch(strcasecmp($str1, $str2)) {
        case 0:
            echo "第一個(gè)字符串$str1 等于 第二個(gè)字符串 $str2"; break;
        case -1:
            echo "第一個(gè)字符串$str1 小于 第二個(gè)字符串 $str2"; break;
        case 1:
            echo "第一個(gè)字符串$str1 大于 第二個(gè)字符串 $str2"; break;
    
    }

strcmp.php

<?php
/*  1. 使用等號(hào)比較字符串(常見(jiàn))
 *
 *      注意: 如果是不區(qū)分大小寫(xiě)的進(jìn)行比較,兩個(gè)比較的字符串要么都轉(zhuǎn)成大寫(xiě), 要么都轉(zhuǎn)成小寫(xiě)
 *
 *
 */

    $str1 = "abc";
    $str2 = "Abc";

    switch(strcmp($str1, $str2)) {
        case 0:
            echo "第一個(gè)字符串$str1 等于 第二個(gè)字符串 $str2"; break;
        case -1:
            echo "第一個(gè)字符串$str1 小于 第二個(gè)字符串 $str2"; break;
        case 1:
            echo "第一個(gè)字符串$str1 大于 第二個(gè)字符串 $str2"; break;
    
    }

test.php

<?php
/*  1. 使用等號(hào)比較字符串(常見(jiàn))
 *
 *      注意: 如果是不區(qū)分大小寫(xiě)的進(jìn)行比較,兩個(gè)比較的字符串要么都轉(zhuǎn)成大寫(xiě), 要么都轉(zhuǎn)成小寫(xiě)
 *
 *  2. 字符比較 
 *      strcmp()
 *      strcasecmp()
 *
 *  3. 按自然順序比較
 *      strnatcmp()
 *      strnatcasecmp();
 *
 *
 */

    $arr = array("File1.txt", "file2.txt", "file11.txt", "file12.txt");

    usort($arr, "strnatcasecmp");

    print_r($arr);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容