10/10/2018, 09:41
thêm chữ unicode vào DB, php, preg_match
Chào các bác,
Các bác có thể giúp em 1 chút về PHP kg? Mình muốn add content vào DB và có thể hiện ra trên web php những ký tự tiếng Việt như (â, ế, đ…) mà không phải là (#, %, &...)
Vậy...
1. Mình set DB thành utf8_general_ci, như thế có đúng kg?
2. Mình có đoạn code php để thêm từ vào DB, nhưng nó kg cho phép chữ có khoảng trắng và có dấu. Mình phải sửa như thế nào? Để có thể thêm khoảng trắng và ký tự (â, ế, đ…) mà không phải (#, %, &...)
Mong các bác giúp mình
Các bác có thể giúp em 1 chút về PHP kg? Mình muốn add content vào DB và có thể hiện ra trên web php những ký tự tiếng Việt như (â, ế, đ…) mà không phải là (#, %, &...)
Vậy...
1. Mình set DB thành utf8_general_ci, như thế có đúng kg?
2. Mình có đoạn code php để thêm từ vào DB, nhưng nó kg cho phép chữ có khoảng trắng và có dấu. Mình phải sửa như thế nào? Để có thể thêm khoảng trắng và ký tự (â, ế, đ…) mà không phải (#, %, &...)
PHP Code:
function them_vao($word){
if (preg_match('/^***91;a-zA-Z***93;+$/', $_POST***91;'word'***93;)) {
$word = $_POST***91;'word'***93;;
} else {
echo 'Sai!';
exit();
}
if (add_word($word)) {
echo "<p>Da them vao! </p>";
} else {
echo "<p>Khong the them vao! </p>";
}
echo "<b>Chu:</b> $word<br/>";
}
Bài liên quan
2. Sửa lại hàm them_vao như sau:
function them_vao($word){
/*if (preg_match('/^***91;a-zA-Z***93;+$/', $_POST***91;'word'***93;)) {
$word = $_POST***91;'word'***93;;
} else {
echo 'Sai!';
exit();
}*/
$word = addslashes($_POST***91;'word'***93;);
if (add_word($word)) {
echo "<p>Da them vao! </p>";
} else {
echo "<p>Khong the them vao! </p>";
}
echo "<b>Chu:</b> $word<br/>";
}
Mình có thử edit như bạn nói. Sau đó thử add tiếng việt vào, nó ra các ký tự ntn �� mặc dù charset của web là unicode rồi. Làm thế nào để hiện đúng nhỉ?
function them_vao($word){
if (!preg_match('/***91;\~\`\!\@\#\$\%\^\&\****93;+/', $_POST***91;'word'***93;)) {
$word = $_POST***91;'word'***93;;
} else {
echo 'Sai!';
exit();
}
$word = addslashes($word);
if (add_word($word)) {
echo "<p>Da them vao! </p>";
} else {
echo "<p>Khong the them vao! </p>";
}
echo "<b>Chu:</b> $word<br/>";
}
- Đặt Colation của DB là utf8 (đặt là utf8_general_ci là Okie rùi)
- Khi mở kết nối, đảm bảo chắc chắn rằng việc kết nối đến DB đúng là utf8, nếu không chắc chắn thì thực hiện các query dưới đây sau khi Open Connection (tức là thực hiện các query này trước khi thực hiện các query khác)
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");
vào trong thẻ <head>)
$sql = "SET NAMES utf8";
$sql = "SET CHARACTER SET utf8";
$sql = "SET COLLATION_CONNECTION='utf8_general_ci'";
$sql = "SELECT * FROM `words` WHERE (SELECT `word` LIKE '%$word%') AND (`url` = 'none') AND (`word` != '$word') LIMIT 0, 20";
$results = mysql_query($sql);