Bài viết [PHP] - Hàm tạo Alias cho URL

Thảo luận trong 'PHP' bắt đầu bởi white.smut, 14 Tháng sáu 2014.

  1. Offline

    white.smut

    • Administrator

    • Loading: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||] 99% Completed - Error: Disconnected. Please try again!
    Số bài viết:
    842
    Đã được thích:
    425
    Điểm thành tích:
    450
    Dưới đây là hàm tạo Alias cho URL:
    Lưu ý:
    - Các ký tự tiếng việt + dấu đều được thay thế bằng chữ cái latinh
    - Các ký tự đặc biệt được lược bỏ
    - Các khoảng trống được thay thế bằng dấy "-"

    Ví dụ: "Diễn đàn sinh viên trường Cao đẳng Việt Hàn"
    => "dien-dan-sinh-vien-truong-cao-dang-viet-han"

    PHP:
    <?php
    function alias($str =''){
    $vMap = array(
    'é' => 'e',
    'è' => 'e',
    'ẻ' => 'e',
    'ẽ' => 'e',
    'ẹ' => 'e',
    'ý' => 'y',
    'ỳ' => 'y',
    'ỷ' => 'y',
    'ỹ' => 'y',
    'ỵ' => 'y',
    'ú' => 'u',
    'ù' => 'u',
    'ủ' => 'u',
    'ũ' => 'u',
    'ụ' => 'u',
    'ư' => 'u',
    'ứ' => 'u',
    'ừ' => 'u',
    'ử' => 'u',
    'ữ' => 'u',
    'ự' => 'u',
    'í' => 'i',
    'ì' => 'i',
    'ỉ' => 'i',
    'ĩ' => 'i',
    'ị' => 'i',
    'ó' => 'o',
    'ò' => 'o',
    'ỏ' => 'o',
    'õ' => 'o',
    'ọ' => 'o',
    'ô' => 'o',
    'ố' => 'o',
    'ồ' => 'o',
    'ổ' => 'o',
    'ỗ' => 'o',
    'ộ' => 'o',
    'á' => 'a',
    'à' => 'a',
    'ả' => 'a',
    'ã' => 'a',
    'ạ' => 'a',
    'â' => 'a',
    'ấ' => 'a',
    'ầ' => 'a',
    'ẩ' => 'a',
    'ẫ' => 'a',
    'ậ' => 'a',
    'ă' => 'a',
    'ắ' => 'a',
    'ằ' => 'a',
    'ẳ' => 'a',
    'ẵ' => 'a',
    'ặ' => 'a',
    'ê' => 'e',
    'ế' => 'e',
    'ể' => 'e',
    'ễ' => 'e',
    'ệ' => 'e',
    'ơ' => 'o',
    'ớ' => 'o',
    'ờ' => 'o',
    'ở' => 'o',
    'ỡ' => 'o',
    'ợ' => 'o',
    'É' => 'e',
    'È' => 'e',
    'Ẻ' => 'e',
    'Ẽ' => 'e',
    'Ẹ' => 'e',
    'Ê' => 'e',
    'Ế' => 'e',
    'Ề' => 'e',
    'Ể' => 'e',
    'Ễ' => 'e',
    'Ệ' => 'e',
    'Ý' => 'y',
    'Ỳ' => 'y',
    'Ỷ' => 'y',
    'Ỹ' => 'y',
    'Ỵ' => 'y',
    'Ú' => 'u',
    'Ù' => 'u',
    'Ủ' => 'u',
    'Ũ' => 'u',
    'Ụ' => 'u',
    'Ư' => 'u',
    'Ứ' => 'u',
    'Ừ' => 'u',
    'Ử' => 'u',
    'Ữ' => 'u',
    'Ự' => 'u',
    'Í' => 'i',
    'Ì' => 'i',
    'Ỉ' => 'i',
    'Ĩ' => 'i',
    'Ị' => 'i',
    'Ó' => 'o',
    'Ò' => 'o',
    'Ỏ' => 'o',
    'Õ' => 'o',
    'Ọ' => 'o',
    'Ô' => 'o',
    'Ố' => 'o',
    'Ồ' => 'o',
    'Ổ' => 'o',
    'Ỗ' => 'o',
    'Ộ' => 'o',
    'Ơ' => 'o',
    'Ớ' => 'o',
    'Ờ' => 'o',
    'Ở' => 'o',
    'Ỡ' => 'o',
    'Ợ' => 'o',
    'Á' => 'a',
    'À' => 'a',
    'Ả' => 'a',
    'Ã' => 'a',
    'Ạ' => 'a',
    'Â' => 'a',
    'Ấ' => 'a',
    'Ầ' => 'a',
    'Ẩ' => 'a',
    'Ẫ' => 'a',
    'Ậ' => 'a',
    'Ă' => 'a',
    'Ắ' => 'a',
    'Ằ' => 'a',
    'Ẳ' => 'a',
    'Ẵ' => 'a',
    'Ặ' => 'a',
    'đ' => 'd',
    'Đ' => 'd',
    );
    $str strtolower(preg_replace('/[^0-9a-zA-Z\_\-]/''-'strtr(strtr($str$vMap), array(' '=>'-'))));
    $ii=0;
    $new '';
    while (
    $iistrlen($str))
    {
    if (
    $str[$ii]=='-')
    {
    $new $new.$str[$ii];
    $ii++;
    while (
    $str[$ii]=='-' && $ii strlen($str))
    {
    $ii++;
    }
    }
    else
    {
    $new $new.$str[$ii];
    $ii++;
    }
    }
    return 
    $new;
    }
    ?>
    Test bằng cách viết thêm đoạn code này:

    PHP:
    <?php
    if(isset($_POST['submit']))
    {
    $chuoi $_POST['chuoi'];
    echo 
    alias($chuoi);
    }
    else print 
    "
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
    <form action='' method='POST'>
    <input type='text' name='chuoi'>
    <input type='submit' name='submit' value='Lấy Alias'>
    </form>"
    ;
    ?>
    Chúc các bạn thành công!

    Các file đính kèm:

    • alias.rar
      Kích thước:
      911 bytes
      Đọc:
      121
  2. Offline

    hoiuc

    • Windows 95

    • từ khi khi anh ý lên , mình đã hối hận khi vào đây /
    Số bài viết:
    26
    Đã được thích:
    15
    Điểm thành tích:
    110
    Mình nghĩ chuỗi này có vẻ đầy đủ hơn nè :3

    PHP:
    $vMap = array(
        
    '/ä|æ|ǽ/' => 'ae',
        
    '/ö|œ/' => 'oe',
        
    '/ü/' => 'ue',
        
    '/Ä/' => 'Ae',
        
    '/Ü/' => 'Ue',
        
    '/Ö/' => 'Oe',
        
    '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
        
    '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
        
    '/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
        
    '/ç|ć|ĉ|ċ|č/' => 'c',
        
    '/Ð|Ď|Đ/' => 'D',
        
    '/ð|ď|đ/' => 'd',
        
    '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
        
    '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
        
    '/Ĝ|Ğ|Ġ|Ģ/' => 'G',
        
    '/ĝ|ğ|ġ|ģ/' => 'g',
        
    '/Ĥ|Ħ/' => 'H',
        
    '/ĥ|ħ/' => 'h',
        
    '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
        
    '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
        
    '/Ĵ/' => 'J',
        
    '/ĵ/' => 'j',
        
    '/Ķ/' => 'K',
        
    '/ķ/' => 'k',
        
    '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
        
    '/ĺ|ļ|ľ|ŀ|ł/' => 'l',
        
    '/Ñ|Ń|Ņ|Ň/' => 'N',
        
    '/ñ|ń|ņ|ň|ʼn/' => 'n',
        
    '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
        
    '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
        
    '/Ŕ|Ŗ|Ř/' => 'R',
        
    '/ŕ|ŗ|ř/' => 'r',
        
    '/Ś|Ŝ|Ş|Š/' => 'S',
        
    '/ś|ŝ|ş|š|ſ/' => 's',
        
    '/Ţ|Ť|Ŧ/' => 'T',
        
    '/ţ|ť|ŧ/' => 't',
        
    '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
        
    '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
        
    '/Ý|Ÿ|Ŷ/' => 'Y',
        
    '/ý|ÿ|ŷ/' => 'y',
        
    '/Ŵ/' => 'W',
        
    '/ŵ/' => 'w',
        
    '/Ź|Ż|Ž/' => 'Z',
        
    '/ź|ż|ž/' => 'z',
        
    '/Æ|Ǽ/' => 'AE',
        
    '/ß/'=> 'ss',
        
    '/IJ/' => 'IJ',
        
    '/ij/' => 'ij',
        
    '/Œ/' => 'OE',
        
    '/ƒ/' => 'f'
    );
  3. Offline

    white.smut

    • Administrator

    • Loading: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||] 99% Completed - Error: Disconnected. Please try again!
    Số bài viết:
    842
    Đã được thích:
    425
    Điểm thành tích:
    450
    chắc vậy.. :D
    hoiuc thích bài này.
  4. Offline

    hoiuc

    • Windows 95

    • từ khi khi anh ý lên , mình đã hối hận khi vào đây /
    Số bài viết:
    26
    Đã được thích:
    15
    Điểm thành tích:
    110
    hehe hàm này mình lấy trong Codeigniter , khi nào ad tìm hiểu rùi làm mấy cái tut về CI cho a e tham khảo với :
  5. Offline

    white.smut

    • Administrator

    • Loading: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||] 99% Completed - Error: Disconnected. Please try again!
    Số bài viết:
    842
    Đã được thích:
    425
    Điểm thành tích:
    450
    Mình cũng đang tìm hiều bên CI nè :D
    hoiuc thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí