10/10/2018, 10:07

Cần Pro xử lý dấu tiếng Việt trong PHP giúp đỡ

Em đang cần so sánh các chuỗi có dạng sau :

J.K. Rowling b&# 7883; c& aacute;o bu&# 7897;c &# 273;&# 7841;o v&# 259;n

J.K. Rowling bị cáo buộc đạo văn

J.K. Rowling bi cao buoc dao van

Thực tế là 3 chuỗi này có nghĩa giống nhau và em muốn hàm xử lý so sánh sẽ cho kết quả là 3 chuỗi này bằng nhau .

Với chuỗi thứ 2 và thứ 3 ta có thể áp dụng cách bỏ dấu tiếng Việt cả 2 chuỗi ( thay thế kí tự á->a , ị->i , ... ) rồi so sánh .

Nhưng với chuỗi thứ 1 thì em ko nghĩ ra cách gì cả . Mong các pro hướng dẫn giúp em . Em xin chân thành cảm ơn .
jiSh@n viết 12:22 ngày 10/10/2018
Dùng html_entity_decode()
supershot viết 12:11 ngày 10/10/2018
Được gửi bởi jiSh@n
Dùng html_entity_decode()
Pro có thể nói rõ hơn không . Em dùng html_entity_decode() chuỗi thứ 1 nhưng cũng ko chuyển sang chuỗi bình thường "J.K. Rowling bị cáo buộc đạo văn" hoặc "J.K. Rowling bị cao buoc dao van" được .
pcdinh viết 12:14 ngày 10/10/2018
Em xem method transliterateToAscii() để chuyển kí tự có dấu về ko dấu

http://code.google.com/p/spica/sourc...ilterUtils.php
bka viết 12:14 ngày 10/10/2018
Code:
<?php
//source bkascript.com
function convert_to_ascii($str, $all = TRUE)
{
   if (preg_match_all('/\&#(\d+)\;/', $str, $matches))
   {
	   for ($i = 0, $s = count($matches['0']); $i < $s; $i++)
	   {
		   $digits = $matches['1'][$i];

		   $out = '';

		   if ($digits < 128)
		   {
			   $out .= chr($digits);

		   }
		   elseif ($digits < 2048)
		   {
			   $out .= chr(192 + (($digits - ($digits % 64)) / 64));
			   $out .= chr(128 + ($digits % 64));
		   }
		   else
		   {
			   $out .= chr(224 + (($digits - ($digits % 4096)) / 4096));
			   $out .= chr(128 + ((($digits % 4096) - ($digits % 64)) / 64));
			   $out .= chr(128 + ($digits % 64));
		   }

		   $str = str_replace($matches['0'][$i], $out, $str);
	   }
   }

   if ($all)
   {
	   $str = str_replace(array("&amp;", "&lt;", "&gt;", "&quot;", "&apos;", "&#45;","&aacute;"),
						  array("&","<",">","\"", "'", "-",'á'),
						  $str);
   }

   return $str;
}

echo convert_to_ascii('J.K. Rowling b***7883; c&aacute;o bu***7897;c ***273;***7841;o v***259;n');
?>
supershot viết 12:10 ngày 10/10/2018
Thx all . Em làm được rồi ^^
Bài liên quan
0