ในการเขียนบทความหรือจัดการเนื้อหา (Content Management) บนเว็บไซต์ ปัญหาหนึ่งที่คนทำเว็บและ Editor มักจะเจอบ่อยๆ คือ “ความไม่เป็นระเบียบของการเว้นวรรคช่องว่างรอบเครื่องหมายวงเล็บ” บางบทความเคาะเว้นวรรคข้างใน บางบทความพิมพ์ติดกันเป็นพืด ซึ่งนอกจากจะดูไม่สวยงามแล้ว ยังไม่ถูกต้องตามหลักเกณฑ์ของสำนักงานราชบัณฑิตยสภาอีกด้วย
บทความนี้จะพาไปดู “หลักการใช้นขลิขิต (วงเล็บ)” ที่ถูกต้อง พร้อมแจกสคริปต์ SQL (รองรับ MySQL 8.0+ และ MariaDB 10.0.5+) เพื่อให้คุณสามารถสั่ง Update เคลียร์ข้อมูลทั้ง Database ให้สวยงามและได้มาตรฐานในคำสั่งเดียวครับ
💡 หลักการใช้นขลิขิต (วงเล็บ) ตามมาตรฐานราชบัณฑิตยสภา
อ้างอิงจากหลักเกณฑ์การใช้เครื่องหมายวรรคตอนของราชบัณฑิตยสภา การจัดวางตำแหน่งช่องว่าง (Space) ของเครื่องหมายวงเล็บ มีกฎเหล็กสำคัญดังนี้
- ก่อนเปิดวงเล็บ
(: ให้เคาะเว้นวรรค ๑ ครั้ง - หลังปิดวงเล็บ
): ให้เคาะเว้นวรรค ๑ ครั้ง (ยกเว้นกรณีอยู่ท้ายประโยคแล้วตามด้วยเครื่องหมายวรรคตอนอื่น) - ข้อความภายในวงเล็บ
( ... ): ไม่ต้องเคาะเว้นวรรค ข้อความต้องเขียนติดกับวงเล็บเปิดและปิดทันที
ตัวอย่างการใช้งานจริง
- การใช้นขลิขิตเพื่ออธิบายหรือขยายความ: ใช้ครอบข้อความที่ทำหน้าที่อธิบายคำศัพท์ หรือบอกที่มา
- ❌ แบบที่ผิด: ท่านเดินทางไปปฏิบัติภารกิจที่กรุงลอนดอน(London )ประเทศอังกฤษ
- แบบที่ถูกต้อง: ท่านเดินทางไปปฏิบัติภารกิจที่กรุงลอนดอน (London) ประเทศอังกฤษ
- การใช้นขลิขิตสำหรับตัวเลขหรือคำอ่าน: ใช้ระบุจำนวนเงิน วันเดือนปี เพื่อป้องกันการตีความผิด
- ❌ แบบที่ผิด: มอบเงินสนับสนุนจำนวน ๕,๐๐0 บาท( ห้าพันบาทถ้วน )
- แบบที่ถูกต้อง: มอบเงินสนับสนุนจำนวน ๕,๐๐0 บาท (ห้าพันบาทถ้วน)
- การจัดทำเชิงอรรถและการอ้างอิง: * ❌ แบบที่ผิด: การสื่อสารในยุคดิจิทัลมีความซับซ้อน (Smith, 2023)
- แบบที่ถูกต้อง: การสื่อสารในยุคดิจิทัลมีความซับซ้อน (Smith, 2023)
🛠️ แปลงร่างกฎราชบัณฑิตยสภา ให้เป็นสคริปต์ SQL (Regex)
ในฐานะนักพัฒนาระบบ เราคงไม่สามารถไปนั่งไล่แก้บทความทีละหน้าได้ หากเว็บมีบทความเป็นพันๆ เรื่อง การใช้พลังของ Regular Expression (Regex) ร่วมกับคำสั่ง UPDATE ใน SQL คือคำตอบที่ดีที่สุด
สคริปต์นี้จะล้างช่องว่างที่ผิดพลาดภายในวงเล็บออก และจัดระยะห่างภายนอก (หน้า-หลัง) ให้เหลือเว้นวรรคเพียง 1 ช่องโดยอัตโนมัติ
⚠️ ข้อควรระวัง: ก่อนรันคำสั่ง SQL ที่มีผลต่อข้อมูลเป็นวงกว้าง ควรทำการ Backup (Snapshot) ตารางข้อมูล เช่น
wp_postsไว้ก่อนเสมอเพื่อความปลอดภัย
UPDATE `wp_posts`
SET `post_content` = REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(
`post_content`,
'\\s*\\(\\s*', ' (' -- Step 1: เคลียร์ช่องว่างรอบวงเล็บเปิด ให้เหลือช่องว่างด้านหน้า 1 ช่อง และข้างในชิด
),
'\\s*\\)\\s*', ') ' -- Step 2: เคลียร์ช่องว่างรอบวงเล็บปิด ให้ข้างในชิด และเหลือช่องว่างด้านหลัง 1 ช่อง
),
' +', ' ' -- Step 3: เคลียร์กรณีเกิด Double Space (ช่องว่างเบิ้ล) จากการสั่งคำสั่งด้านบน
),
' +\\)', ')' -- Step 4: ดักเก็บตก เผื่อมีช่องว่างหลงเหลือหน้าวงเล็บปิด
)
WHERE `post_content` REGEXP '\\(|\\)';
คำอธิบายการทำงานของสคริปต์ (Pipeline Logic)
'\\s*\\(\\s*', ' (': ค้นหาวงเล็บเปิด(ที่อาจจะมีช่องว่างข้างหน้าหรือข้างหลังกี่ช่องก็ตาม ยุบรวมให้เหลือเพียงช่องว่าง 1 ช่องก่อนหน้าตัววงเล็บเปิดเท่านั้น ผลลัพธ์คือข้อความด้านในจะมาชนขอบวงเล็บทันที เช่นคำ ( ข้อความ➡️คำ (ข้อความ'\\s*\\)\\s*', ') ': ค้นหาวงเล็บปิด)แล้วยุบช่องว่างด้านในให้ข้อความมาชนวงเล็บ และบังคับให้เว้นวรรคด้านหลัง 1 ช่องเสมอ เช่นข้อความ ) คำ➡️ข้อความ) คำ' +', ' ': ยุบช่องว่างที่อาจจะเกิดการซ้อนกันเกิน 1 ช่อง (Double Space) ให้กลับมาเหลือช่องว่างเดี่ยวตามมาตรฐานWHERE ... REGEXP '\\(|\\)': เลือกดึงเฉพาะแถวที่มีเครื่องหมายวงเล็บอยู่ในเนื้อหาเท่านั้น เพื่อไม่ให้ระบบต้องประมวลผลฟรีกับแถวที่ไม่มีวงเล็บ เป็นการ Optimize Performance ของ Database
🎯 สรุปผลลัพธ์หลังการรันระบบ
เมื่อรันสคริปต์นี้เสร็จสิ้น ข้อมูลบทความทั้งหมดในระบบจะถูกจัดฟอร์แมตใหม่ให้อยู่ในมาตรฐานเดียวกันทันที
| ข้อมูลดิบใน Database (ก่อนแก้) | ผลลัพธ์หลังรัน SQL (ตามมาตรฐานราชบัณฑิตฯ) |
|---|---|
| กรุงลอนดอน(London )ประเทศอังกฤษ | กรุงลอนดอน (London) ประเทศอังกฤษ |
| จำนวนเงิน ๕,๐๐๐ บาท ( ห้าพันบาทถ้วน ) | จำนวนเงิน ๕,๐๐๐ บาท (ห้าพันบาทถ้วน) |
| ยุคดิจิทัลมีความซับซ้อน( Smith, 2023 ) | ยุคดิจิทัลมีความซับซ้อน (Smith, 2023) |
การนำ SQL เข้ามาประยุกต์ใช้ร่วมกับหลักเกณฑ์ทางภาษา ไม่เพียงแต่ช่วยให้งานเขียนบนเว็บไซต์ดูเป็นมืออาชีพ มีมาตรฐานที่ถูกต้องตามที่ราชบัณฑิตยสภากำหนด แต่ยังช่วยประหยัดเวลาของ Content Editor และดูแล Data Integrity ของระบบสารสนเทศในองค์กรได้อย่างมีประสิทธิภาพอีกด้วยครับ
อ่านเพิ่มเติม
