ฉันจะหลีกเลี่ยง ']' ด้วยรหัสย่อได้อย่างไร


17

ฉันจะหลบหนีวงเล็บขวาในรหัสสั้น ๆ ได้อย่างไร

ฉันกำลังทำงานกับปลั๊กอิน Google แผนที่ที่มีการเข้ารหัสจุด บางครั้งรูปหลายเหลี่ยมมี] อยู่ในนั้นซึ่งทำให้ WP คิดว่ามันเป็นจุดสิ้นสุดของรหัสย่อ

ตัวอย่างเช่น:

[my_shortcode latitude='36.93'  longitude='-72.98' encoded_points='ortlF~g]tM?cZEH`z]}|@DQfi]' ]

ฉันลองแล้ว]ซึ่งไม่ได้ทำให้เกิดปัญหาสำหรับ WP แต่มันทำให้เกิดปัญหากับรหัสแผนที่ Google ของฉัน ฉันสามารถใช้ Regex เพื่อแทนที่] แต่อาจมีวิธีที่ง่ายกว่า รหัสย่อมีอักขระเลี่ยงหรือไม่

คำตอบ:


18

ฉันไม่รู้ไวยากรณ์การหลบหนีอย่างเป็นทางการสำหรับรหัสย่อและอาจมีไม่ได้

เมื่อแยกวิเคราะห์ WordPress สำหรับย่อจะมองหา[และ] หากคุณต้องการใช้วงเล็บสี่เหลี่ยมภายในรหัสย่อการใช้เอนทิตี html ASCIIนั้นจะหนีออกมา

คือแทนที่[โดย[และ]]โดย Wordpress จะไม่รับรู้]ว่าเป็นจุดสิ้นสุดของรหัสย่อ

ไม่ว่าจุดประสงค์ดังกล่าวจะให้บริการตามวัตถุประสงค์ของคุณหรือไม่นั้นขึ้นอยู่กับว่าจะถูกแปลงเป็น]ก่อนที่จะส่งผ่านไปยัง Google Maps API หรือไม่หรือ API นั้นจัดการตามที่คาดไว้หรือไม่ ฉันไม่มีประสบการณ์กับเรื่องนั้นดังนั้นจึงพูดไม่ได้


ขอบคุณสำหรับคำตอบ ในคำถามของฉันฉันลืมใส่ '& # 93;' ในบล็อกรหัสเพื่อให้มันออกมาเป็น ']' ฉันแก้ไขคำถามแล้ว เอนทิตี HTML ใช้งานได้กับ WP แต่ไม่ใช่สำหรับ Google แผนที่ ฉันจะต้องใช้ Regex เพื่อแทนที่เอนทิตี HTML ขอบคุณมากสำหรับความช่วยเหลือ
Laxmidi

@Laxmidi ข้างต้นของฉัน "เดา" ว่าไม่มีเส้นขอบตัวอักษรหลบหนีในความมั่นใจ - แค่อยากจะระมัดระวังที่จะไม่ให้ข้อมูลที่ผิด หากเป็นเช่นนั้นฉันคิดว่าบทความ codex บนShortcode APIน่าจะกล่าวถึง ฉันคิดว่าการแทนที่หลังจากนั้นเป็นทางออกที่ดีที่สุดของคุณ คุณต้องการ regex สำหรับตัวละครตัวหนึ่งหรือไม่? ฉันคิดว่าstr_replace()ควรจะทำงานให้สำเร็จเช่นกัน จะใช้ทรัพยากรน้อยลงถ้าทำได้
Johannes Pille

1
@JohannesPille สวัสดีมันเป็น oldie แต่ฉันต้องมี [] ถูกแทนที่ด้วย & # 93; ประหยัดครั้งแรกใน WP และใช้งานได้ แต่เมื่อแก้ไขโพสต์ / หน้า WP จะเปลี่ยน & # 93; เป็น] (ต้องการสิ่งนี้สำหรับการติดตามกิจกรรม google บนปุ่มรหัสลัด) ขอแสดงความนับถือ
alex

ดังที่ @alex กล่าวว่าหากคุณเปลี่ยนเป็นแท็บที่มองเห็นและกลับไปที่แท็บรหัสจะเห็นว่า tinyMCE เปลี่ยนอักขระพิเศษกลับไปเป็น [] จากนั้นแบ่งรหัส
Saulo Padilha

tinyMCE เป็น Javascript และสามารถเสียบได้ ลองดูที่wpse / คำถาม / 223677 / เพิ่ม-กำหนดเองข้อความรูปแบบ-in-the-WP-4-5 ภาพบรรณาธิการ @alex
Johannes Pille

2

จากคำตอบของ Johannes Pille มีฟังก์ชั่น wp เพื่อหลีกเลี่ยงวงเล็บเหลี่ยมสำหรับใช้ข้อความในพารามิเตอร์รหัสย่อ:

function my_esc_brackets($text = ''){
    return str_replace( [ "[" , "]" ] , [ "[" , "]" ] , $text );
}

บ่อยครั้งที่ผู้คนแนะนำให้ใช้ $ เนื้อหาย่อของพารามิเตอร์ข้อความ แต่มีบางกรณีที่รหัสย่อมีพารามิเตอร์ข้อความจำนวนมาก


2

ดูเหมือนจะมีหน้าอย่างเป็นทางการที่นี่: หนีรหัสย่อ

แยก:

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

[แกลลอรี่]

คุณจะเขียนสิ่งนี้:

[[แกลลอรี่]]


0

แม้ว่าคุณจะไม่ได้เล่นกับ url ให้ใช้ urldecode (attribute_value ของคุณ) ด้วย% 5B และ% 5D ที่ใช้แทน [และ] ใน attribute_value ของคุณ

รหัสของคุณอาจมีลักษณะเช่นนี้:

ในหน้า wp ของคุณ: [my_shortcode myattr="%5Bmyattribute_value%5D"]

จากนั้นในฟังก์ชันย่อของคุณให้ทำดังนี้

 $origvalue=urldecode($atts['myattr']);

สิ่งนี้จะคืนค่าอักขระ [และ] ใน $ origvalue ดังนั้นตอนนี้ $ origvalue จะมี: [myattribute_value]

เคล็ดลับ: หากคุณกำลังเล่นกับ url ให้ทำเช่นเดียวกัน แต่เพิ่มรหัสต่อไปนี้ลงในฟังก์ชัน:

$urlvalue = urlencode($origvalue);

หากยังไม่ชัดเจน: ใช่ฉันกำลังทำ urlencode (urldecode (ค่าบางอย่างจาก $ atts)) เพื่อสร้างส่วนที่ถูกต้องของ url

ค่อนข้างง่ายหวังว่านี่จะช่วยได้

ปิแอร์


-1

นี่เป็นคำถามเก่า แต่นี่เป็นวิธีแก้ปัญหาโดยใช้ CSS แทนที่เครื่องหมายวงเล็บ, ให้ใส่อักขระในช่วงดังนี้:

<span class="bracket">some string</span>

จากนั้นเพิ่มไปยังสไตล์ชีทของธีม:

span.bracket:before {
  content: '['
}
.colored-blocks span.bracket:after {
  content: ']'
}

ผลลัพธ์จะเป็นดังนี้:

[some string]


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