รบกวนถามเรื่องของการใช้ฟังชั่นตัดคำหยาบใน พีเอชพี ครับ
<!--เรื่องมีอยู่ว่าผมสร้างฟอร์มขึ้นมาหนึ่งฟอร์มดังนี้-->
<html>
<head>
<title>ทดสอบการใช้งานฟังชั่นตัดคำหยาบคาย</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post" action="chk_rude.php">
<table widh="80%" align="center" border="0">
<tr>
<td>ชื่อ</td>
<td><input type="text" name="uname"></td>
</tr>
<tr>
<td>อีเมล</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td colspan="2" align="center">รายละเอียดกระทู้</td>
</tr>
<tr>
<td colspan="2" align="center">
<textarea name="detail" cols="45" rows="9">
</textarea>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="สร้างกระทู้ใหม่"></td>
</tr>
</table>
</form>
</body>
</html>
<!--ไฟล์ พีเอชพีที่รับการตอบรับชื่อ chk_rude.php
<?/*
function chkRude($temp){
$rude_word=array("xxx","xxx","xxx","xxx",
"xxx","xxx","xxx","xxx","ชาติชั่ว","xxx","ดอ","xxx","ไอ้สัตว์");
$change="<font color='red'><b>Apologize</b></font>";
//กำหนดให้คำว่า Apologize คือคำที่ใช้แทนคำหยาบ
for($i=0; $i<sizeof($rude_word);$i++){
$temp=eregi_replace($rude_word[$i],$change,$temp);
}
return $temp;
}
$name=$_POST["uname"];
$email=$_POST["email"];
$detail=$_POST["detail"];
$text=chkRude($detail);
$msg="";
$dbname="dream";//ฐานข้อมูลมีสร้างอยู่แล้วชื่อดรีม
$tbname="bord_answer";//สร้างตารางชื่อ
$link=mysql_connect("localhost","root","1234");
mysql_query("set names utf8");
mysql_select_db($dbname,$link);
$cmd="insert into $tbname(answer_name,answer_detail)values('$name','$text')";
//ถ้าเปลี่ยน $text เป็น $detail ก็จะสามารถบันทึกได้
//แต่ว่าคำหยาบก็เป็นคำหยาบ แล้วทั้งเว็บก็จะมีแต่สัตว์เลื้อยคลานเต็มไปหมด//
mysql_query($cmd,$link);
if(!$cmd){
$msg.="ไม่สามารถบันทึกข้อมูลได้ครับ";
}else{
$msg.="บันทึกแล้วครับ";
}
echo $msg;
echo $text;
//ลองให้มันแสดงออกมามันถูกต้องคือ
//คำหยาบจะถูกแทนที่ด้วยคำว่า Apologize แต่จะไม่มีอะไรเข้าฐานข้อมูล//
?>
-->ผมลองหมดทุกทางเท่าที่ผมพอจะเดาได้แต่ว่ามันไม่เข้าฐานข้อมูลอยู่ดี
ทั้งสองไฟล์นี้(ไฟล์ question.php และ ไฟล์ chk_rude.php)
ผมทดสอบกับเครื่องของผมแล้ว ผลลััพธ์ที่ได้คือ ไม่สามารถบันทึก $text เข้าฐานข้อมูลได้
แต่เมื่อเปลี่ยนจาก $text เป็น $detail ก็สามารถบันทึกได้ตามปรกติ
ผมพอจะตัดคำหยาบได้อย่างไรครับ ช่วยตอบหน่อยครับนั่งมึนมาทั้งวันแล้วครับ
ผมใช้ Appserve version 'appserv-win32-2.5.9.exe
*/
เหตุผลง่ายๆ ที่ผมใช้วิธีนี้ ก็คือ หากต้องการทำการแก้ไขข้อมูล เราจะได้ข้อมูลดิบขึ้นมาแก้ไขข้อมูลตามความเป็นจริง ไม่ใช่ข้อมูลที่ดัดแปลงแล้ว และอีกอย่าง การอัปเกรดในอนาคต จะทำได้ง่ายกว่า เนื่องจากเราไม่จำเป็นต้องอัปเกรดส่วนบันทึก แต่ใช้วิธีการอัปเกรด ส่วนแสดงผลแทน