------
Phần 65. Chuỗi
trong PHP - phần 3
Đây là clip số 44:
Sử dụng hàm addslashes($str) để thêm dấu \ vào trước các kí
tự: ‘, “, \. Ví dụ, echo addslashes('abc
\ fd "');
Sử dụng hàm addcslashes($str, $character) để thêm dấu \ vào
trước các kí tự $character. echo addcslashes('a b c', 'ac');
Sử dụng hàm stripslashes($str) để loại bỏ các dấu \ được
thêm vào bằng hàm addslashes trước đó. Ví dụ, echo stripslashes('\\a
\"b\" \\c');
Sử dụng hàm stripcslashes($str) để loại bỏ các dấu \ được
thêm vào bằng hàm addcslashes trước đó. Ví dụ, echo stripcslashes('b \k \c');
Đọc thêm về HTML entities. Ví dụ: > (dấu >),
© (dấu copyright).
Đây là clip số 45:
Sử dụng hàm htmlspecialchars($str) để chuyển đổi các kí tự
được quy định trước sang giá trị HTML entities.
Ví dụ, chạy hai lệnh này, rồi vào xem mã HTML để hiểu về hàm
htmlspecialchars($str),
<?php
echo
'<b>Nguyen</b> Van Teo';
echo
htmlspecialchars('<b>Nguyen</b> Van Teo');
?>
Sử dụng hàm htmlspecialchars_decode($str) để chuyển đổi các
giá trị HTML entities (do dùng hàm htmlspecialchars trước đó) về giá trị ban
đầu. Ví dụ, echo
htmlspecialchars_decode('<b>Nguyen</b> Van Teo');
Sử dụng hàm htmlentities($str); để chuyển đổi các kí tự sang
giá trị HTML entities.
Sử dụng hàm html_entity_decode($str); để chuyển đổi các giá
trị HTML entities được gọi bởi hàm htmlentities về giá trị ban đầu.
Sử dụng hàm get_html_translation_table để xuất các HTML
entities và special character. Ví dụ, chạy ba ví dụ sau để xem kết quả,
$array = get_html_translation_table();
$array = get_html_translation_table(HTML_ENTITIES);
$array = get_html_translation_table(HTML_SPECIALCHARS);
echo '<pre>';
print_r($array);
echo '<pre>';
Sử dụng hàm strip_tags($str) để loại bỏ các thẻ HTML trong
chuỗi. Ví dụ:
<?php
$str =
'<script>alert("Đã bị nhiễm mã độc!!!!");</script>';
echo $str;
echo
strip_tags('<script>alert("Đã bị nhiễm mã độc!!!!");</script>')
?>
Đây là clip số 46: bài tập “đọc các số có ba chữ số”
Đây là clip số 47: bài tập “đọc các số có ba chữ số” (tiếp)
Để chuyển số thành chuỗi, sử dụng hàm strval();
Lưu lại mã nguồn để tham khảo,
<?php
/*
* 100 một trăm
* 101 một trăm
linh một
* 111 một trăm
mười một
* 121 một trăm
hai mươi mốt
* 105 một trăm
linh năm
* 115 một trăm
mười lăm
* 145 một trăm
bốn mươi lăm
*/
$arrayNumber =
array (
0
=> 'không',
1
=> 'một',
2
=> 'hai',
3
=> 'ba',
4
=> 'bốn',
5
=> 'năm',
6
=> 'sáu',
7
=> 'bảy',
8
=> 'tám',
9
=> 'chín',
);
$number =215;
function
readNumber3Digit($number, $dictionaryNumber, $readFull = true)
{
$number
= strval($number);
$number
= str_pad($number, 3, 0, STR_PAD_LEFT);
echo
$number;
//
lấy chữ số ở hàng đơn vị, chục, trăm
$digit_0
= substr($number, 2, 1);
$digit_00
= substr($number, 1, 1);
$digit_000
= substr($number, 0, 1);
//
đọc số hàng trăm
$str_000
= $dictionaryNumber[$digit_000].' trăm ';
//
đọc số hàng chục
//
0: linh; 1: mười; 2-9: 2 -9 mươi
$str_00
= $dictionaryNumber[$digit_00].' mươi ';
if($digit_00
== 0) { $str_00 = ' linh '; }
if($digit_00
== 1) { $str_00 = ' mười '; }
//
đọc số hàng đơn vị
//
1: mốt - khi $digit_00 > 1
//
5: lăm - khi $digit_00 > 0
$str_0
= $dictionaryNumber[$digit_0];
if($digit_00
> 1 && $digit_0 == 1) { $str_0 = ' mốt'; }
if($digit_00
>= 1 && $digit_0 == 5) { $str_0 = ' lăm'; }
if($digit_00
> 1 && $digit_0 == 0) { $str_0 = ' '; }
if($digit_00
== 0 && $digit_0 == 0) {
$str_0
= ' ';
$str_00
= ' ';
}
if($readFull
== false) {
if($digit_000
== 0) { $str_000 = ' '; }
if($digit_000
== 0 && $digit_00 == 0) { $str_00 = ' '; }
}
$result
= $str_000.$str_00.$str_0;
return
$result;
}
$result =
readNumber3Digit($number, $arrayNumber, false);
echo $result;
?>
Đây là clip số 48: đọc số có 12 chữ số
Lưu lại đoạn mã để tham khảo,
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php
/*
* 100 một trăm
* 101 một trăm linh một
* 111 một trăm mười một
* 121 một trăm hai mươi
mốt
* 105 một trăm linh năm
* 115 một trăm mười lăm
* 145 một trăm bốn mươi
lăm
*/
$dictNumbers = array (
0 =>
'không',
1 =>
'một',
2 =>
'hai',
3 => 'ba',
4 =>
'bốn',
5 =>
'năm',
6 =>
'sáu',
7 =>
'bảy',
8 =>
'tám',
9 =>
'chín'
);
$dictUnits = array (
0 => 'tỷ',
1 => 'triệu',
2 => 'nghìn',
3 => 'đồng'
);
$number =20000000;
function readNumber3Digit($number,
$dictionaryNumber, $readFull = true)
{
$number =
strval($number);
$number =
str_pad($number, 3, 0, STR_PAD_LEFT);
// lấy chữ số ở hàng
đơn vị, chục, trăm
$digit_0 =
substr($number, 2, 1);
$digit_00 =
substr($number, 1, 1);
$digit_000 =
substr($number, 0, 1);
// đọc số hàng trăm
$str_000 =
$dictionaryNumber[$digit_000].' trăm ';
// đọc số hàng chục
// 0: linh; 1: mười;
2-9: 2 -9 mươi
$str_00 =
$dictionaryNumber[$digit_00].' mươi ';
if($digit_00 == 0) {
$str_00 = ' linh '; }
if($digit_00 == 1) {
$str_00 = ' mười '; }
// đọc số hàng đơn vị
// 1: mốt - khi
$digit_00 > 1
// 5: lăm - khi
$digit_00 > 0
$str_0 =
$dictionaryNumber[$digit_0];
if($digit_00 > 1
&& $digit_0 == 1) { $str_0 = ' mốt '; }
if($digit_00 >= 1
&& $digit_0 == 5) { $str_0 = ' lăm '; }
if($digit_00 > 1
&& $digit_0 == 0) { $str_0 = ''; }
if($digit_00 == 0
&& $digit_0 == 0) {
$str_0 = '';
$str_00 = '';
}
if($readFull == false)
{
if($digit_000 == 0) {
$str_000 = ''; }
if($digit_000 == 0
&& $digit_00 == 0) { $str_00 = ''; }
}
$result =
$str_000.$str_00.$str_0;
return $result;
}
// end readNumber3Digit
function
formatString($str, $type = null) {
// chuyển về dạng chữ
thường
$str =
strtolower($str);
// bỏ khoảng trắng
trái-phải
$str = trim($str);
// bỏ khoảng trắng thừa
ở giữa
// chuyển chuỗi thành
mảng
$array = explode(' ',
$str);
// bỏ các phần tử
khoảng trắng trong mảng
foreach ($array as $key
=> $value) {
if(trim($value) ==
null) {
unset($array[$key]);
continue;
}
if($type ==
'danh-tu') $array[$key] = ucfirst($value);
}
// chuyển mảng thành
chuỗi
$result = implode(' ',
$array);
// chuyển kí tự đầu
tiên của chuỗi thành chữ hoa
$result =
ucfirst($result);
return $result;
}
// end formatString
function
readNumber12Digits($number, $dictUnits, $dictNumbers) {
$number =
strval($number);
$number =
str_pad($number, 12, 0, STR_PAD_LEFT);
$arrNumber =
str_split($number, 3);
foreach ($arrNumber as
$key => $value) {
if($value != '000') {
$index = $key;
break;
}
}
foreach ($arrNumber as
$key => $value) {
if($key >= $index)
{
$readFull = true;
if($key == $index)
$readFull = false;
$result[$key] =
readNumber3Digit($value, $dictNumbers, $readFull).' '.$dictUnits[$key];
}
}
$result = implode(' ',
$result);
$result =
formatString($result);
$result =
str_replace('không đồng', 'đồng', $result);
$result =
str_replace('không trăm đồng', 'đồng', $result);
$result =
str_replace('không nghìn đồng', 'đồng', $result);
$result =
str_replace('không trăm nghìn đồng', 'đồng', $result);
$result =
str_replace('không triệu đồng', 'đồng', $result);
$result =
str_replace('không trăm triệu đồng', 'đồng', $result);
$result =
str_replace('không tỷ triệu đồng', 'đồng', $result);
return $result;
}
$result =
readNumber12Digits($number, $dictUnits, $dictNumbers);
echo $result;
?>
</body>
</html>
Đây là clip số 49: ôn tập về chuỗi
-----------
Cập nhật [9/9/2020]
-----------