01/10/2018, 00:48

Xin hỏi nguyên nhân không bỏ được dấu tiếng việt bằng GET

Mình có code php như thế này

<?php

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

	return $str;
	}

echo vn_str_filter($_GET['ten']);
?>

Nhưng khi chạy nó không xóa dấu tiếng việt.

BaoLe viết 02:56 ngày 01/10/2018
	foreach($unicode as $nonUnicode => $uni){
      foreach(explode("|",$uni) as $char){
		    $string = preg_replace("/($char)/i", $nonUnicode, $string);
		}
  }
Lien Phan viết 03:03 ngày 01/10/2018

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

return $str;
}

Tôi thấy code chạy bình thường mà bạn !

Zi viết 02:49 ngày 01/10/2018

Thử với
echo vn_str_filter(rawurldecode(urldecode($_GET['ten'])));
Xem sao

Bài liên quan
0