Dreamweaver - แทนที่ด้วยนิพจน์ปกติหรือไม่


2

ฉันมีหน้าเว็บประมาณ 6 หน้าฉันได้รับทั้งข้อมูล POST และ GET หลายครั้ง (PHP) ตอนนี้ฉันได้สร้างฟังก์ชั่นที่เป็นข้อมูลสำหรับฉันดังนั้นแทนที่จะพิมพ์:

$_POST['whatever'];

ตอนนี้ฉันพิมพ์:

gpost('whatever');

ปัญหาที่ฉันมีคือฉันจะขี้เกียจแทนที่ $ _POST ด้วย gpost () (และ $ _GET ด้วย gget () ฉันรู้วิธีการทำเช่นนั้น แต่ฉันต้องลบเครื่องหมายวงเล็บปีกกา [] เช่นกันมิฉะนั้นจะเป็น d มีลักษณะเช่นนี้: gpost (['อะไรก็ตาม']) ไม่ใช่สิ่งที่ฉันต้องการจริงๆ

แต่ดูที่หน้าต่างค้นหา / แทนที่ใน Dreamweaver ฉันเห็นช่องทำเครื่องหมายระบุว่า "ใช้การแสดงออกปกติ" ดังนั้นฉันถาม; บางคนสามารถช่วยฉันสร้างนิพจน์ทั่วไปที่มาแทนที่สิ่งนี้:

$_POST['whatever'];

ด้วยสิ่งนี้:

gpost('whatever');

หน้าต่างแทนที่มีลักษณะดังนี้:

enter image description here

แก้ไข: ตอนนี้ฉันพบเว็บไซต์ แต่ดูเหมือนจะไม่ทำงาน นี่คือสิ่งที่ฉันมาด้วยตอนนี้: trentmueller.com/blog/search-and-replace-wildcard-characters-in-dreamweaver.html

หา:

$_GET['([^<]*)']

แทนที่:

gget("$1")

ฉันได้รับข้อผิดพลาดนี้: ไม่ตรงกัน) ในการแสดงออกปกติ


s/\$_POST\['(.*?)']/gpost('$1')/ ฉันควรทำงานฉันเชื่อ $ 1 อ้างอิงการจับคู่ครั้งแรก (The (. *?)) ดังนั้นหาก Dreamweaver ใช้ไวยากรณ์ที่แตกต่างกันสำหรับสิ่งที่คุณต้องการจะพิจารณาว่ามันคืออะไร
Phoshi

ขอบคุณ Phoshi เป็นไปได้ไหมที่แบ่งออกเป็นสองนิพจน์ ใน Dreamweaver มีสองช่อง ดูภาพที่ฉันโพสต์ด้านบน
Nike

ขอโทษด้วยฉันลืมบางคนไม่คุ้นเคยกับไวยากรณ์ \$_POST\['(.*?)'] คือ "ค้นหา" (แม้ว่า [จำเป็นต้องได้รับการยกเว้นด้วย \ ซึ่งดูเหมือนจะไม่ต้องการปรากฏในความคิดเห็น) และ gpost('$1') คือ "แทนที่"
Phoshi

ฉันลองใช้นิพจน์ใหม่ที่คุณโพสต์ แต่ดูเหมือนว่าไม่ได้ทำงานเช่นกัน ฉันพยายามหลบหนี [] เช่นกัน แต่นั่นก็ไม่ได้ทำอะไรแตกต่าง ฉันแก้ไขโพสต์ของฉันคุณอาจช่วยให้ฉันทำงานแทนได้หรือไม่ ขอบคุณอีกครั้งขอบคุณมันซะ!
Nike

สิ่งที่คุณคัดลอกมานั้นไม่ทำงานเนื่องจากคลาส [^ & amp; lt;] * ตรงกับ "อักขระใด ๆ ที่ไม่ & amp; lt; 0 หรือมากกว่านั้น" & amp; lt; ไม่ได้มาที่นี่ด้วยซ้ำ มิฉะนั้นนิพจน์ของคุณไม่ทำงานเนื่องจาก [และ] กำหนด "คลาสอักขระ" และคุณต้องหลบ [ด้วย a \ เพื่อหยุดให้เป็นคลาสอักขระและเริ่มจับคู่ตัวอักษร [
Phoshi

คำตอบ:


1

หากคุณต้องการแทนที่สิ่งนี้ทุกที่ยกเว้นว่าฉันหายไปบางอย่างคุณไม่จำเป็นต้องใช้นิพจน์ปกติเพียงทำการเปลี่ยนและวางปกติ $_POST['whatever']; ในฐานะที่เป็นค้นหาและ gpost('whatever'); เป็นการแทนที่

เปลี่ยนเมนูแบบเลื่อนลงเป็นทั้งไซต์และในซอร์สโค้ดเท่านั้น

หากคุณต้องการใช้นิพจน์ปกติกองล้นจะเป็นทางออกที่ดีที่สุดของคุณเพื่อขอความช่วยเหลือ แต่ฉันคิดว่าคุณจะเป็นเรื่องที่ซับซ้อน


จุดที่ใช้การแสดงออกปกติคือการหลีกเลี่ยงการใช้เวลาทำอะไรบางอย่าง ดังที่ได้กล่าวไว้ก่อนหน้านี้ฉันมีหลายหน้าซึ่งแตกต่างกันทั้ง $ _POST และ $ _GET พวกเขาทั้งหมดมี "คีย์" ที่แตกต่างกันในพวกเขา (ฉันใช้ "อะไรก็ตาม" เป็นตัวอย่างก่อน .. ) ฉันสามารถทำสิ่งที่ต้องการแทนที่ $ _GET ['ด้วย gget (แต่ฉันจะพบปัญหาเมื่อฉันต้องการแทนที่ด้านอื่น ๆ เพราะในรหัสต่อไปฉันมี PHP อาร์เรย์ซึ่งใช้วงเล็บปีกกา []] ไม่สามารถแทนที่ ...
Nike

0

คุณต้องหลีกเลี่ยงอักขระเมตาดังนั้นลอง:

\$_GET\['([^<]*)'\]

และ

gget("$1")

มันใช้งานได้สำหรับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.