Xâu - Các phép toán thường gặp (tiếp) Các hàm làm việc với xâu (string) So sánh 2 xâu Để so sánh 2 xâu với nhau, ta sử dụng strcmp và strncmp PHP Code: strcmp($xâu_1, $xâu_2); strncmp($xâu_1, $xâu_2, $n); Hàm strcmp sẽ chuyển từng kí tự trong 2 xâu về dạng mã byte của mỗi kí tự để so sánh, nó sẽ trả về 1 trong 3 giá trị: 1. (-1) nếu $xâu_1 "bé hơn" $xâu_2 2. 0 nếu 2 xâu "bằng nhau" 3. 1 nếu $xâu_1 "lớn hơ n" $xâu_2 Hàm strncmp cũng hoạt động tương tự, nhưng nó sẽ không kiểm tra hết cả 2 xâu mà chỉ kiểm tra $n kí tự đầu tiên mà thôi Để dễ hiểu hơn, ta có ví dụ sau đây: PHP Code: <?php $strA = 'Update softs'; $strB = 'update softs'; $strC = 'tpdate softs'; $strD = ''; $strE = ''; $strF = 'Update life'; //So sánh A và B: mã của "U" < mã của "u" ~> đự doán là $resultAB = -1 $resultAB = strcmp($strA, $strB); //So sánh B và C: mã của "u" > mã của "t" ~> dự đ oán là $resultBC = 1 $resultBC = strcmp($strB, $strC); //So sánh D và E: 2 thằng cùng không có gì ~> dự đoán là $resultDE = 0 $resultDE = strcmp($strD, $strE); //So sánh A và F (6 kí tự đầu tiên): 6 kí tự đầu tiên giống nhau ~> dự đoán là $res ultAF = 0 $resultAF = strncmp($strA, $strF, 6); //In ra kết quả ech esultD ?> Cho ch ạ Quote: $result A $resultB $resultD $resultA Vậy là đ Ngoài 2 nhau tu y 1. st b sẽ 2. st "f N "f N là V "F Đơn giản Chữ H O Khi làm nhất là s PHP Co strto u strtolo Hàm str strtolow Xét ví dụ PHP Co ho "\$result DE<br/>\$r ạy đoạn mã AB = -1 BC = 1 DE = 0 AF = 0 đúng rồi nhỉ hàm strcmp y nhiên mỗi trcasecmp v iệt hoa thườ ẽ nhận đc k trnatcmp và filename10 Nếu dùng str filename10 Nhưng khôn àm việc như Với strnatcm Filename10 n vậy thôi OA và chữ việc, đôi l ú sử dụng 2 h de: upper($xâu) ower($xâu) rtoupper khi wer thì ngượ ụ sau đây: de: tAB = $resu resultAF = $ trên bạn sẽ ỉ? p và strncm i hàm lại kh và strncase ờng ~> nếu kết là 0 à strnatcase " và "filena rcmp thì do " nhỏ hơn " ng sao, chún ư strcmp và mp thì "filen 0" sẽ lớn hơ thường úc bạn khôn àm chuyển ); ); i chạy sẽ trả ợc lại, sẽ trả ultAB<br/> $resultAF"; thu được: mp còn có 1 hác nhau 1 t cmp: 2 bạn u trong ví dụ ecmp: 2 anh ame9". o mã của "1 "filename9" ng ta đã có 2 à strcasecmp name10" sẽ ơn "fileNAM ng muốn để đổi sau: ả về $xâu v ả về $xâu vớ >\$resultBC ; vài hàm kh tí tẹo: này chỉ kh ụ so sánh $s h bạn này th " nhỏ hơn " "! Bạn sẽ lẩ 2 hàm strna p cộng thêm ẽ lớn hơn "f ME9" ể ý đến chữ với tất cả cá ới tất cả các = $resultB hác cũng dù ác ở 1 điểm strA và $str hì khá hay đ "9" nên hiển ẩm bẩm: "L atcmp và st m khả năng filename9", HOA và c h ác kí tự đều c kí tự đều l C<br/>\$re ùng để so sá m, đó là nó s rB mà dùng đấy. Giả sử n nhiên kết àm việc nh ư trnatcasecm xử lý số đặ với strncas hữ thường, là kí tự H O là kí tự thườ esultDE = $ ánh 2 xâu v sẽ không ph g strcasecmp bạn có 2 xâ quả sẽ là ư máy (!?)" mp có khả nă ặc biệt. secmp thì cách đơn g OA, hàm ờng r với hân p thì âu là ". ăng giản <?php $st ech ech ech ?> Kết quả Quote: UPDA T updateso *Note: Để nối 2 Trong ví PHP Co <?ph p $st ech ?> Kết quả Mr.pai n p tr = "UpDA ho strtouppe ho "<br/>"; ho strtolowe thu đc sẽ là TESOFTS ofts 2 xâu lại vớ í dụ cuối cù de: p tr = "UpDA ho strtouppe thu được v nt(UDS) AteSoftS"; er($str); er($str); à: ới nhau ta dù ùng có thể v AteSoftS"; er($str)."<b vẫn sẽ như v ùng toán tử viết gọn lại br/>".strtolo vậy . là: ower($str); . (string) So sánh 2 xâu Để so sánh 2 xâu với nhau, ta sử dụng strcmp và strncmp PHP Code: strcmp($xâu_1, $xâu _2) ; strncmp($xâu_1, $xâu _2, $n); Hàm strcmp. tự trong 2 xâu về dạng mã byte của mỗi kí tự để so sánh, nó sẽ trả về 1 trong 3 giá trị: 1. (-1) nếu $xâu_1 "bé hơn" $xâu _2 2. 0 nếu 2 xâu "bằng