Xóa chữ có dấu Font Unicode với PHP

<? 
/** 
* @code do pthngan sưu tầm tại phpbasic.com 
*/ 
    function stripUnicode($str){ 
        if(!$str) return false; 
        $unicode = array( 
            'a'=>'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ', 
            'd'=>'đ', 
            'e'=>'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ', 
            'i'=>'í|ì|ỉ|ĩ|ị', 
            'o'=>'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ', 
            'u'=>'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự', 
            'y'=>'ý|ỳ|ỷ|ỹ|ỵ', 
        ); 
        foreach($unicode as $nonUnicode=>$uni) 
  $str = preg_replace("/($uni)/i",$nonUnicode,$str); 
return $str; 
    } 
     
?> 
Giải thích:

  1. $nonUnicode: là thứ tự của các phần tử trong mảng đối với mảng dùng chỉ số là SỐ VD: phantu[1],phantu[2].... nhưng với mảng kết hợp như trên, chỉ số thứ tự có thể là 1 ký tự 'a','e','d',... hoặc cũng là chuỗi cũng được ví như  'CustomerName'=>'Bill Gates'.
  2. $uni: là giá trị của mảng ứng với chỉ số $nonUnicode ở trên
  3. Hàm preg_replace (pattern, replacement,string):Nhiệm vụ thay thế các pattern trong chuỗi string thành replacement
    Ở đây có xài 1 chút ký hiệu cho biểu thức chính quy -là các ký tự đại diện cho 1 chuỗi tổng quát nào đó-. Giải thích: 
    1. "/($uni)/i" :
    2. /: bắt đầu hoặc kết thúc một pattern
    3. (): có tác dụng giống như cách dùng bình thường , tăng độ ưu tiên của biểu thức chính quy.
    4. i: phân biệt hoa thường đối với pattern đang tìm kiếm.
      • Một bài tập lập trình nho nhỏ ứng dụng thực tế như cái này chẳng hạn: Bỏ dấu tiếng việt cho đoạn văn sau:
      • Anh ơi em đang coi quán.Đến ngay di anh, muộn lắm rồi.A,tiện thể mua báo mới nhé,ở nhà toàn báo cũ thôi.Mà thôi ko cần mua đâu,em vừa mất kính rồi,ko nhìn được nữa anh ơi,đến ngay đi anh,muộn lắm rồi..
      • và kết quả:
      • Anh oi em dang coi quan. Den ngay di anh, muon lam roi. A, tien the mua bao moi nhe, o nha toan bao cu thoi. Ma thoi ko can mua bao dau, em vua mat kinh roi, khong nhin duoc nua anh oi, den ngay di, muon lam roi...  
Hoặc là đoạn code sau đây:
<?
$cs="Thật là lắm chuyện";

$marTViet=array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă",
"ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề"
,"ế","ệ","ể","ễ",
"ì","í","ị","ỉ","ĩ",
"ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ"
,"ờ","ớ","ợ","ở","ỡ",
"ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ",
"ỳ","ý","ỵ","ỷ","ỹ",
"đ",
"À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă"
,"Ằ","Ắ","Ặ","Ẳ","Ẵ",
"È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ",
"Ì","Í","Ị","Ỉ","Ĩ",
"Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ"
,"Ờ","Ớ","Ợ","Ở","Ỡ",
"Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ",
"Ỳ","Ý","Ỵ","Ỷ","Ỹ",
"Đ");

$marKoDau=array("a","a","a","a","a","a","a","a","a","a","a"
,"a","a","a","a","a","a",
"e","e","e","e","e","e","e","e","e","e","e",
"i","i","i","i","i",
"o","o","o","o","o","o","o","o","o","o","o","o"
,"o","o","o","o","o",
"u","u","u","u","u","u","u","u","u","u","u",
"y","y","y","y","y",
"d",
"A","A","A","A","A","A","A","A","A","A","A","A"
,"A","A","A","A","A",
"E","E","E","E","E","E","E","E","E","E","E",
"I","I","I","I","I",
"O","O","O","O","O","O","O","O","O","O","O","O"
,"O","O","O","O","O",
"U","U","U","U","U","U","U","U","U","U","U",
"Y","Y","Y","Y","Y",
"D");
echo str_replace($marTViet,$marKoDau,$cs);
?>