Ngu ngơ học làm web (64) - Chuỗi trong PHP – phần 2

Tiếp theo của: Ngu ngơ học làm web (63) - Chuỗi trong PHP – phần 1
------

Phần 64. Chuỗi trong PHP – phần 2

Đây là clip số 41:


Bài tập,

Cho chuỗi URL = 'http://210.245.126.171/Music/NhacTre/TinhYeu_LyMaiTrang/wma32/06_BienTham_TinhYeu_LyMaiTrang.wma'

Hãy trích ra,

- ID: 06
- Name: Bien Tham
- Album: Tinh Yeu
- Singer: Ly Mai Trang
- Type: wma

Làm theo hướng dẫn của clip để trích ra chuỗi ‘06_BienTham_TinhYeu_LyMaiTrang.wma’ bằng ba cách:

Cách 1:

function getInfo01 ($str) {
                        $array = explode('/', $str);
                        $result = $array[count($array)-1];
                        return $result;
            }

Cách 2:

            function getInfo02 ($str) {
                        $array = parse_url($str);
                        // chuyển chuỗi path thành mảng
                        $info = explode('/', $array[path]);
                        // lấy phần tử cuối của mảng
                        $result = $info[count($info) - 1];
                        return $result;
            }

Cách 3:

function getInfo03 ($str) {
                        $index = strripos($str, '/');
                        $result = substr($str, $index+1);
                        echo $result;
            }

Để kiểm tra một kí tự có ở dạng chữ hoa hay không sử dụng hàm ctype_upper(text).

Đây là toàn bộ đoạn mã của bài tập,

<?php
            $url = 'http://210.245.126.171/Music/NhacTre/TinhYeu_LyMaiTrang/wma32/06_BienTham_TinhYeu_LyMaiTrang.wma';
           
            function getInfo03 ($str) {
                        $index = strripos($str, '/');
                        $result = substr($str, $index+1);
                        return $result;
            }

            $info = getInfo03($url);

            $result = array();
            $arrayInfo = explode('_', $info);
            // ID
            $result['id'] = $arrayInfo[0];
            // Type
            $arrayType = explode('.', $arrayInfo[3]);
            $result['type'] = $arrayType[1];

            // Name, Album, Singer
            $arrayInfo[3] = $arrayType[0];

            function format($str) {
                        $result = $str[0];
                        for($i = 1; $i < strlen($str); $i++) {
                                    if(ctype_upper($str[$i])) {
                                                $result .= ' '.$str[$i];
                                    } else {
                                                $result .= $str[$i];
                                    }
                        }
                        return $result;
            }

            $result['singer'] = format($arrayInfo[3]);
            $result['name'] = format($arrayInfo[1]);
            $result['album'] = format($arrayInfo[2]);
?>

Đây là clip số 42:


Để so sánh hai chuỗi, sử dụng hàm strcmp($str1, $str2). Ví dụ:

- strcmp('abc', 'abc'); trả về 0: hai chuỗi bằng nhau.

- strcmp('abc', 'abcde'); trả về -2: chuỗi hai lớn hơn chuỗi một 2 kí tự.

- strcmp('abcdef', 'abc'); trả về 3: chuỗi một lớn hơn chuỗi hai 3 kí tự.

Để so sánh một phần của chuỗi $str1 với toàn bộ chuỗi $str2, sử dụng hàm substr_compare($str1, $str2, $start, $length). Ví dụ,

substr_compare('abcdef', 'abc', 0, 3); trả về 0: ba kí tự của chuỗi một bằng chuỗi hai.

Để tăng độ dài của chuỗi bằng cách chèn thêm các kí tự, sử dụng hàm str_pad($str, $length, $padString, $padType); tăng chiều dài cho chuỗi $str thành $length kí tự, bằng cách chèn thêm kí tự $padString.

Ví dụ,

$str = 'abc';
            $new_str = str_pad($str, 7, 't');
            echo $new_str;

Kết quả là: abctttt

Ví dụ có tham số $padType: chèn bên trái, phải, hay hai bên.

<?php
            $str = 'abc';
            $new_str = str_pad($str, 7, 't', STR_PAD_LEFT);
            echo $new_str;
?>

Kết quả là: ttttabc

Để xáo trộn các kí tự trong chuỗi, sử dụng hàm str_shuffle(). Ví dụ,

$str = 'abc';
            $new_str = str_shuffle($str);
            echo $new_str;

Để tìm kiếm và thay thế các kí tự trong chuỗi, sử dụng hàm str_replace($find, $replace, $string); tìm trong chuỗi $string, nếu có chuỗi $find, hãy thay thế bằng chuỗi $replace. Hàm str_replace cũng có thể thực hiện thay thế trên mảng.

Để đếm số lần xuất hiện của chuỗi con, sử dụng hàm substr_count($string, $substring, $start, $length); lấy $length phần tử từ vị trí $start của chuỗi $string, và đếm số lần xuất hiện của chuỗi $substring trong chuỗi vừa lấy.

Sử dụng hàm str_split($str, $length) để cắt chuỗi thành từng phần đưa vào mảng, độ dài của mỗi phần là $length kí tự.

Ví dụ,

<?php
            $str = 'abcdefgh';
            $array = str_split($str, 2);
            echo '<pre>';
            print_r($array);
            echo '</pre>';
?>

Kết quả xuất ra là,

Array
(
    [0] => ab
    [1] => cd
    [2] => ef
    [3] => gh
)

Đây là clip số 43: bài tập chuẩn hóa chuỗi


Một chuỗi gọi là chuẩn khi:

- Không có khoảng trắng ở đầu và cuối chuỗi

- Giữa các từ chỉ có một khoảng trắng

- Viết hoa kí tự đầu tiên của chuỗi, của danh từ riêng

- Các kí tự còn lại ở dạng chữ thường

Đây là đoạn mã,

<?php
            $str = '   nGuyeN     VAn tEo     ';
           
            function formatString($str, $type = null) {
                        // chuyển về dạng chữ thường
                        $str = strtolower($str);
                        // bỏ khoảng trắng trái-phải
                        $str = trim($str);
                        // bỏ khoảng trắng thừa ở giữa
                        // chuyển chuỗi thành mảng
                        $array = explode(' ', $str);
                        // bỏ các phần tử khoảng trắng trong mảng
                        foreach ($array as $key => $value) {
                                    if(trim($value) == null) {
                                                unset($array[$key]);
                                                continue;
                                    }
                                    if($type == 'danh-tu') $array[$key] = ucfirst($value);
                        }
                        // chuyển mảng thành chuỗi
                        $result = implode(' ', $array);
                        // chuyển kí tự đầu tiên của chuỗi thành chữ hoa
                        $result = ucfirst($result);
                        return $result;
            }
           
            echo $result = formatString($str, 'danh-tu');

?>
-----------
Cập nhật [9/9/2020]
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web