[+1ทุกคนครับ]งงกับ preg_replace ใน PHP ครับ

เริ่มโดย DewChelsea, 20 กุมภาพันธ์ 2014, 22:52:55

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

DewChelsea

ผมไม่ทราบว่า replace ธรรมดา กับ preg_replace ต่างกันอย่างไรครับ

และยัง งง กับ element ของ preg_replace เช่น
function encode($str) {
return preg_replace('/(.)\1*/e', 'strlen($0) . $1', $str);
}

ขอยิงคำถามเลยนะครับ
1. replace ธรรมดา กับ preg_replace ต่างกันอย่างไรครับ
2. /(.)\1*/e = อะไรครับ เราสามารถแก้ตัวอักษรพวกนี้ได้ยังไงบ้างครับ
3. $0,$1 มันคืออะไรครับ ทำไมมันไม่ต้องประกาศค่าตัวแปรก่อนที่จะใช้ครับ
ขอบคุณครับ  :-[

icez

1) replace ธรรมดาคือการเปลี่ยน ข้อความแบบตายตัว จาก a ไปเป็น b
ส่วน preg(หรือ regular expression อื่นๆ) สามารถระบุเป็น pattern ได้ครับ ข้อความต้นฉบับไม่จำเป็นต้องตายตัว

2) มันคือ pattern ครับ รูปแบบชื่อ regular expression ค่อนข้างซับซ้อนและอ่านยากพอควร

3) มันไม่ใช่ตัวแปรใน php ครับ แต่เป็นผลที่ได้จากการ match pattern ที่อยู่ในวงเล็บ $0 คือข้อความทั้งหมดที่ตรง ส่วน $1 คือวงเล็บอันแรก $2 $3 $4 ก็ไล่ไปเรื่อยๆ
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

DewChelsea

อ้างถึงจาก: icez ใน 20 กุมภาพันธ์ 2014, 23:11:19
1) replace ธรรมดาคือการเปลี่ยน ข้อความแบบตายตัว จาก a ไปเป็น b
ส่วน preg(หรือ regular expression อื่นๆ) สามารถระบุเป็น pattern ได้ครับ ข้อความต้นฉบับไม่จำเป็นต้องตายตัว

2) มันคือ pattern ครับ รูปแบบชื่อ regular expression ค่อนข้างซับซ้อนและอ่านยากพอควร

3) มันไม่ใช่ตัวแปรใน php ครับ แต่เป็นผลที่ได้จากการ match pattern ที่อยู่ในวงเล็บ $0 คือข้อความทั้งหมดที่ตรง ส่วน $1 คือวงเล็บอันแรก $2 $3 $4 ก็ไล่ไปเรื่อยๆ


ขอบคุณมากเลยครับ  :wanwan017: :wanwan017: :wanwan017: