nedka/vietnamese

The Vietnamese toolkit for PHP.

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/nedka/vietnamese

1.0.13 2025-07-29 09:22 UTC

This package is auto-updated.

Last update: 2025-12-29 10:39:28 UTC


README

The Vietnamese toolkit for PHP.

Requirements

  • PHP 8.0+.

Installation

Require this package in your composer.json:

composer require nedka/vietnamese
composer install

Import the package:

use NEDKA\Vietnamese\Vietnamese;

Usage

Format names:

Vietnamese::format('ViỆt NaM')

Result: Việt Nam

Remove all accents:

Vietnamese::clean('Việt Nam')

Result: Viet Nam

Convert into NCR Decimal:

Vietnamese::clean('Việt Nam', 'ncr_decimal')

Result: Việt Nam

Run all available methods for correcting spelling errors:

Vietnamese::correct('THI tUổi KỈ Tị')

Result: Thi tuổi Kỷ Tỵ

Correct wrong accent placements:

Vietnamese::correctAccent('Vịêt Nam')

Result: Việt Nam

Correct wrong cases between "i" and "y":

Vietnamese::correctIY('Thi tuổi Kỉ Tị')

Result: Thi tuổi Kỷ Tỵ

Sorting words:

Sorting by values in a string with delimiter:

Vietnamese::sort('Ă, A, Â, À, Á')

Result: A, Á, À, Ă, Â

Sorting by values in a simple array:

Vietnamese::sort(['Ă', 'A', 'Â', 'À', 'Á'])

Result: ['A', 'Á', 'À', 'Ă', 'Â']

Sorting a two-dimensional array by multiple keys in order:

$array = [
	['name' => 'Cần Thơ', 'valid_date' => '2004-01-01'],
	['name' => 'Cà Mau', 'valid_date' => '1997-01-01'],
	['name' => 'Cần Thơ', 'valid_date' => '1992-01-01']
];
$array = Vietnamese::sort($array, ['name', 'valid_date']);

Result:

array:3 [
	0 => array:2 [
		"name" => "Cà Mau"
		"valid_date" => "1997-01-01"
	]
	1 => array:2 [
		"name" => "Cần Thơ"
		"valid_date" => "1992-01-01"
	]
	2 => array:2 [
		"name" => "Cần Thơ"
		"valid_date" => "2004-01-01"
	]
]

Sorting people names:

Sorting by values in a string with delimiter:

Vietnamese::sortPeopleName('Nguyễn Văn Đảnh, Nguyễn VĂN Đàn, nguYỄn Văn Đàng, NGUYỄN Văn Đang, nguyễn anh đang')

Result: Nguyễn Anh Đang, Nguyễn Văn Đang, Nguyễn Văn Đàn, Nguyễn Văn Đàng, Nguyễn Văn Đảnh

Sorting by values in a simple array:

Vietnamese::sortPeopleName(['Nguyễn Văn Đảnh', 'Nguyễn VĂN Đàn', 'nguYỄn Văn Đàng', 'NGUYỄN Văn Đang', 'nguyễn anh đang'])

Result: ['Nguyễn Anh Đang', 'Nguyễn Văn Đang', 'Nguyễn Văn Đàn', 'Nguyễn Văn Đàng', 'Nguyễn Văn Đảnh']

Sorting a two-dimensional array by multiple keys in order:

$array = [
	['name' => 'Nguyễn Văn Đảnh', 'birth_date' => '1999-01-30'],
	['name' => 'Nguyễn VĂN Đàn', 'birth_date' => '1996-01-30'],
	['name' => 'Nguyễn Văn Đảnh', 'birth_date' => '1997-01-30'],
	['name' => 'NGUYỄN Văn Đang', 'birth_date' => '1995-01-30'],
	['name' => 'Nguyễn VĂN Đàn', 'birth_date' => '1994-01-30']
];
$array = Vietnamese::sortPeopleName($array, ['name', 'birth_date']);

Result:

array:5 [
	0 => array:2 [
		"name" => "Nguyễn Văn Đang"
		"birth_date" => "1995-01-30"
	]
	1 => array:2 [
		"name" => "Nguyễn Văn Đàn"
		"birth_date" => "1994-01-30"
	]
	2 => array:2 [
		"name" => "Nguyễn Văn Đàn"
		"birth_date" => "1996-01-30"
	]
	3 => array:2 [
		"name" => "Nguyễn Văn Đảnh"
		"birth_date" => "1997-01-30"
	]
	4 => array:2 [
		"name" => "Nguyễn Văn Đảnh"
		"birth_date" => "1999-01-30"
	]
]

Check a character in the Vietnamese alphabet:

Vietnamese::checkChar('w')

Result: false

Scan and detect incorrect words in Vietnamese:

Vietnamese::scan('Xứ Wales thắng Nga, đứng nhất bảng B')

Result: ['Wales']

Otherwise, get correct words:

Vietnamese::scan('Xứ Wales thắng Nga, đứng nhất bảng B', false)

Result: ['Xứ', 'thắng', 'Nga', 'đứng', 'nhất', 'bảng', 'B']

Print the way to speak a Vietnamese text string:

Vietnamese::speak('Việt Nam')

Result: i ê tờ iêt, vờ iêt viêt nặng /việt/; a mờ am, nờ am /nam/; /việt nam/

Convert number to text:

Vietnamese::speak(1452369)

Result: một triệu bốn trăm năm mươi hai nghìn ba trăm sáu mươi chín

License

Copyright (c) NEDKA. All rights reserved.

Licensed under the MIT License.