Lỗi làm bỏ dấu tiếng việt dùng cho url. Help me!

103 views
Skip to first unread message

vyquanghoa

unread,
Jan 5, 2010, 1:54:53 AM1/5/10
to PHPVietnam
Chào các bác. Em có hàm này dùng để loại bỏ dấu tiếng Việt dùng cho
url.
function stripUnicode($str){
if(!$str) return false;
$unicode = array(
'a'=>'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ',
'A'=>'Á|À|Ả|Ã|Ạ|Ă|Ắ|Ặ|Ằ|Ẳ|Ẵ|Â|Ấ|Ầ|Ẩ|Ẫ|Ậ',
'd'=>'đ',
'D'=>'Đ',
'e'=>'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
'E'=>'É|É|Ẻ|Ẽ|Ẹ|Ê|Ế|Ề|Ể|Ễ|Ệ',
'i'=>'í|ì|ỉ|ĩ|ị',
'I'=>'Í|Ì|Ỉ|Ĩ|Ị',
'o'=>'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ',
'O'=>'Ó|Ò|Ỏ|Õ|Ọ|Ô|Ố|Ồ|Ổ|Ỗ|Ộ|Ơ|Ớ|Ờ|Ở|Ỡ|Ợ',
'u'=>'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
'U'=>'Ú|Ù|Ủ|Ũ|Ụ|Ư|Ứ|Ừ|Ử|Ữ|Ự',
'y'=>'ý|ỳ|ỷ|ỹ|ỵ',
'Y'=>'Ý|Ỳ|Ỷ|Ỹ|Ỵ',) ;
foreach($unicode as $nonUnicode=>$uni) $str = preg_replace("/($uni)/
i",$nonUnicode,$str);
return $str;
}

Trước kia vẫn dùng bt mà nay tự dừng nó bị lỗi như thế này.
Warning: preg_replace() [function.preg-replace]: Compilation failed:
nothing to repeat at offset 5 in /home/tungnt/public_html/util/
util.file.php on line 163
Bác nào biết nguyên nhân, chỉ cho em với.

Khoa Nguyen

unread,
Jan 5, 2010, 2:03:02 AM1/5/10
to phpvi...@googlegroups.com
Thử kiếm trong PHP có bộ Unicode Normalizer nào kô chứ code kiểu ni tay to ra làm hình thể mất cân đối á :-s
Search ra cho bác nè: http://php.net/manual/en/class.normalizer.php
Coi thử PHP có hỗ trợ Vietnamese locale hay kô nữa là xài được.

2010/1/5 vyquanghoa <vyqua...@gmail.com>

--

Bạn nhận được thư này vì bạn đã được đăng ký vào nhóm Google Groups "PHPVietnam".
Để đăng bài lên nhóm này, hãy gửi email đến phpvi...@googlegroups.com.
Để huỷ đăng ký khỏi nhóm này, hãy gửi email tới phpvietnam+...@googlegroups.com.
Để biết tuỳ chọn khác, hãy truy cập nhóm này tại http://groups.google.com/group/phpvietnam?hl=vi.



nguyen hong phi viet

unread,
Jan 5, 2010, 2:45:06 AM1/5/10
to phpvi...@googlegroups.com
function StripVowelAccent($str,$space_replace = '-',$extensionlink='.html')
{
$clean = @iconv('UTF-8', 'ASCII//TRANSLIT', $str);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_|+ -]+/", $space_replace, $clean);
return $clean.$extensionlink;
}

>> phpvietnam+...@googlegroups.com<phpvietnam%2Bunsu...@googlegroups.com>


>> .
>> Để biết tuỳ chọn khác, hãy truy cập nhóm này tại
>> http://groups.google.com/group/phpvietnam?hl=vi.
>>
>>
>>
>
> --
>
> Bạn nhận được thư này vì bạn đã được đăng ký vào nhóm Google Groups
> "PHPVietnam".
> Để đăng bài lên nhóm này, hãy gửi email đến phpvi...@googlegroups.com.
> Để huỷ đăng ký khỏi nhóm này, hãy gửi email tới
> phpvietnam+...@googlegroups.com.
> Để biết tuỳ chọn khác, hãy truy cập nhóm này tại
> http://groups.google.com/group/phpvietnam?hl=vi.
>
>
>


--
*******************************************************************
* HochiMinh City Vietnam
* Hong Phi Viet Nguyen
* Email: nguyenho...@yahoo.com
* Mobile: 0908 403 408
* Work: PHP Programmer
*******************************************************************

Vy Quang Hòa

unread,
Jan 5, 2010, 3:11:30 AM1/5/10
to phpvi...@googlegroups.com
Cảm ơn các bác! Em làm đc rồi. Phương án của bác Việt không áp dụng đc. Em phải sửa lại thành dạng này
function stripUnicode($str)
{
$string    =    array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă","ằ","ắ",
                "ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề","ế","ệ","ể","ễ",
                "ì","í","ị","ỉ","ĩ","ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ",
                "ổ","ỗ","ơ","ờ","ớ","ợ","ở","ỡ","ù","ú","ụ","ủ","ũ","ư",
                "ừ","ứ","ự","ử","ữ","ỳ","ý","ỵ","ỷ","ỹ","đ","À","Á","Ạ",
                "Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă","Ằ","Ắ","Ặ","Ẳ","Ẵ",
                "È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ","Ì","Í","Ị",
                "Ỉ","Ĩ","Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ",
                "Ờ","Ớ","Ợ","Ở","Ỡ","Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự",
                "Ử","Ữ","Ỳ","Ý","Ỵ","Ỷ","Ỹ","Đ","ê","ù","à");
$replace=    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","e","u","a");
    return str_replace($string,$replace,$str);
}

Post lên đây luôn, nếu ai cần thì dùng

nhakhtn

unread,
Jan 5, 2010, 3:52:36 AM1/5/10
to PHPVietnam
Mình cũng làm tương tự bác Hòa. Ngoài ra bác nên xóa đi các kí tự lạ
nữa mới đủ (ví dụ như ~!@#$%^&*()_+| v.v ...).

Vy Quang Hòa

unread,
Jan 5, 2010, 10:52:47 PM1/5/10
to phpvi...@googlegroups.com
có chứ nhưng làm riêng bác ạ :D

Vào 15:52 Ngày 05 tháng 1 năm 2010, nhakhtn <nha...@gmail.com> đã viết:
Reply all
Reply to author
Forward
0 new messages