หากคุณกำลังมองหาที่ว่างนั่นก็คือ" "
(หนึ่งช่องว่าง)
หากคุณกำลังมองหาหนึ่งหรือมากกว่านั้นก็คือ" *"
(นั่นคือสองช่องว่างและเครื่องหมายดอกจัน) หรือ" +"
(หนึ่งช่องว่างและเครื่องหมายบวก)
หากคุณกำลังมองหาช่องว่างทั่วไปให้ใช้"[ X]"
หรือ"[ X][ X]*"
หรือ"[ X]+"
ที่X
ตัวละครแท็บทางกายภาพ (และแต่ละคนจะนำหน้าด้วยช่องว่างเดียวในตัวอย่างเหล่านั้นทั้งหมด)
สิ่งเหล่านี้จะใช้ได้กับเอ็นจิ้น * regex ทุกตัวที่ฉันเคยเห็น (บางอันไม่มีแม้แต่"+"
ตัวละครหนึ่งตัวหรือมากกว่า)
หากคุณรู้ว่าคุณกำลังใช้หนึ่งในเครื่องมือ regex ที่ทันสมัยกว่า"\s"
และรูปแบบต่าง ๆ เป็นวิธีที่จะไป นอกจากนี้ฉันเชื่อว่าขอบเขตของคำตรงกับจุดเริ่มต้นและจุดสิ้นสุดของบรรทัดเช่นกันสิ่งสำคัญเมื่อคุณกำลังมองหาคำที่อาจปรากฏขึ้นโดยไม่ต้องเว้นวรรคก่อนหรือตามหลัง
สำหรับ PHP โดยเฉพาะหน้านี้อาจช่วยได้
จากการแก้ไขของคุณดูเหมือนว่าคุณต้องการลบอักขระที่ไม่ถูกต้องทั้งหมดจุดเริ่มต้นของสิ่งนี้คือ (สังเกตพื้นที่ภายใน regex):
$newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag);
# ^ space here
หากคุณต้องการใช้กลอุบายเพื่อให้แน่ใจว่ามีเพียงช่องว่างระหว่างแต่ละคำกับไม่มีในตอนเริ่มต้นและสิ้นสุดนั่นเป็นเรื่องที่ซับซ้อนกว่าเล็กน้อย (และอาจเป็นคำถามอื่น) แต่แนวคิดพื้นฐานน่าจะเป็น:
$newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space
$newtag = preg_replace ("/^ /", "", $tag); # remove space from start
$newtag = preg_replace ("/ $/", "", $tag); # and end