A-AA+then

รบกวนถามเรื่องของการใช้ฟังชั่นตัดคำหยาบใน พีเอชพี ครับ

2,102


<!--เรื่องมีอยู่ว่าผมสร้างฟอร์มขึ้นมาหนึ่งฟอร์มดังนี้-->
<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>&nbsp;</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
 */

1 ความคิดเห็น

ปกตินะครับ เรามักจะไม่ทำการดัดแปลงข้อมุลใดๆตอนเก็บลงฐานข้อมุลครับ เราควรตะใช้วิธีการเก็บข้อมูลดิบลงฐานข้อมูลครับ แล้วค่อยทำการดัดแปลงข้อมูล เช่นการตัดคำหยาบในตอนแสดงผล

เหตุผลง่ายๆ ที่ผมใช้วิธีนี้ ก็คือ หากต้องการทำการแก้ไขข้อมูล เราจะได้ข้อมูลดิบขึ้นมาแก้ไขข้อมูลตามความเป็นจริง ไม่ใช่ข้อมูลที่ดัดแปลงแล้ว และอีกอย่าง การอัปเกรดในอนาคต จะทำได้ง่ายกว่า เนื่องจากเราไม่จำเป็นต้องอัปเกรดส่วนบันทึก แต่ใช้วิธีการอัปเกรด ส่วนแสดงผลแทน  
1
^