Discuz Thai

 ลืมรหัสผ่าน
 สมัครสมาชิก

ข้อตกลงการใช้งานกระดานข่าวดิสคัสไทย DiscuzThai Agreement (English Version) ประกาศดิสคัสไทย - ทำเนียบดิสคัสภาษาไทย

Discuz! X3.5 Thai R20240520 Rev.9 (NEW) [วิดีโอช่วยสอน] อัปเกรด Discuz! X3.4 เป็น X3.5 Discord ของ Discuz! Thai Community อย่างเป็นทางการ

Discuz! X3.4 Thai R20220811 (REV.75) สิ้นสุดการสนับสนุน Discuz! X3.4 ภาษาไทยตั้งแต่วันนี้เป็นต้นไป (ขอแนะนำให้อัปเกรดเป็น X3.5 แทน)

ค้นหา
แท็กยอดนิยม: ดิสคัสภาษาไทย Discuz Thai
ดู: 3889|ตอบกลับ: 3

[X1.5] LinkOut ไม่รับเครื่องหมาย "+" (วิธีแก้ครับ ^^) X1 X1.5 X1.5RC

[คัดลอกลิงก์]
rokaisakkon โพสต์ 2011-3-22 16:55:16 |โหมดอ่าน
แก้ไขครั้งสุดท้ายโดย rokaisakkon เมื่อ 2011-3-22 16:56

แก้ไขครั้งสุดท้ายโดย rokaisakkon เมื่อ 2011-3-22 16:55

LinkOut ไม่รับเครื่องหมาย "+" (วิธีแก้ครับ ^^) X1 X1.5 X1.5RC

ปกติ php สงวน (reserved) เครื่องหมายบวกใว้ (+) plus sign
เราจึงไม่สามารถใช้มันได้ตรงๆ แต่เราสามารถ encode ไปเป็นอย่างอื่นก่อน

ยกตัวอย่าง ครับ

  1. "URL : www.ge-7.com/linkout.php?out=code++"
  2. $link = $_GET[out];
  3. echo $link;

  4. ผลที่ได้

  5. "URL : www.ge-7.com/linkout.php?out=code"

คัดลอกไปที่คลิปบอร์ด
เครื่องหมาย + หายไปไหน ?
เรามาดูวิธีแก้ กันครับ

ไปาหา code การส่งค่ามา "linkout.php?out=XXXX"

  1. return '<a href="linkout.php?out='.$url.'" target="_blank">'.$text.'</a>';
คัดลอกไปที่คลิปบอร์ด
เปลี่ยนเป็น

  1. $url = urlencode($url);
  2. return '<a href="linkout.php?out='.$url.'" target="_blank">'.$text.'</a>';
คัดลอกไปที่คลิปบอร์ด
ผลที่ได้จากการใช้ urlencode เครื่องหมายบวกจะถูกเปลี่ยนเป็น %2B

^^ ขอให้ทำได้นะครับ

สำหรับ Discuz All  ไฟล์นี้ครับ function_discuzcode.php

  1. function parseurl($url, $text) {
  2.         if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|synacast){1}:\/\/|www\.)[^\["']+/i", trim($text), $matches)) {
  3.                 $url = $matches[0];
  4.                 $length = 65;
  5.                 if(strlen($url) > $length) {
  6.                         $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
  7.                 }
  8.                 return '<a href="linkout.php?out='.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
  9.         } else {
  10.                 $url = substr($url, 1);
  11.                 if(substr(strtolower($url), 0, 4) == 'www.') {
  12.                         $url = 'http://'.$url;
  13.                 }
  14.                 $url = urlencode($url);
  15.                 return '<a href="linkout.php?out='.$url.'" target="_blank">'.$text.'</a>';
  16.         }
  17. }
คัดลอกไปที่คลิปบอร์ด
ประยุกต์ กันเอง เด้อ ๆ

ขอได้รับ ความขอบคุณจาก

  1. http://www.Ge-7.com
คัดลอกไปที่คลิปบอร์ด
สมารถ ทดสอบได้จาก URL ด้านบนครับ
jaideejung007 โพสต์ 2011-3-22 21:44:37
urlencode ก็มีประโยชน์อีกอย่างหนึ่ง

หากบางกรณีบราวเซอร์ที่เราใช้มันไม่สนับสนุนยูอาร์แอลแบบ UTF-8 เราจำเป็นต้องทำการ encode ยูอาร์แอลกันเสียก่อน(เช่น IE6 ลงมา -- แล้วมันจะมีใครใช้่ไหมเนีย --*)

สังเกตุได้จากที่ดิสคัสเกือบทุกเวอร์ชั่น จนถึงเวอร์นี้ 1.5 ยังมีฟังก์ชันที่ว่า ปรับความเข้ากันได้ของ URL ก็หมายถึง encode url ก่อน ในกรณีที่เราเปิดการใช้งาน Rewrite URL แล้วเมื่อสมาชิกสมัครเป็นชื่ออื่นๆ ที่ไม่ใช่ภาษาอังกฤษ เพราะเวลา Rewrite URL สำหรับลิงค์ไปยังโปรไฟล์ ก็จะต้อง encode ก่อน เพราะสาเหตุอย่างที่กล่าวไว้ข้างต้น
 เจ้าของ| rokaisakkon โพสต์ 2011-3-22 22:54:21
แก้ไขครั้งสุดท้ายโดย rokaisakkon เมื่อ 2011-3-22 22:59

ตอบกระทู้ jaideejung007 ตั้งกระทู้

ขอบคุณมากครัล แต่ในความหมายของผม คือ พอทำ LinkOut แล้ว คลิกลิงค์ ที่มี เครื่องหมาย "+" อยู่ไหนลิงค์ นั้น

แล้ว ใช้ php ดึงcode มา มันจะไม่เป็นเครื่องหมาย + ครับ แต่ มันจะเป็น เว้นวรรค แทน ครับ ^^


และส่วนใหญ่ Discuz เกือบ ทุกเว็บ ที่ทำ Link Out ไม่สามารถ ใช้ ลิงค์ ที่มีเครื่องหมาย + ได้ครับ

ผมทดสอบมาแล้ว ^^
jaideejung007 โพสต์ 2011-3-22 23:08:52
แก้ไขครั้งสุดท้ายโดย jaideejung007 เมื่อ 2011-3-22 23:10

ตอบกระทู้ rokaisakkon ตั้งกระทู้

ความเห็นของผมด้านบนนั้น ป่าวแย้่งนะครับ

เป็นการเล่าสู่กันฟังเฉยๆ หรือพูดง่ายๆ ความรู้เสริม(ในกรณีบางท่านอาจะไม่รู้)

ไม่แน่ใจว่าคิดไปคนละแนวกันหรือเปล่าน้อ...?

หรือว่าผมพิมพ์ไม่ชัดเจนเองล่ะเนีย

ปล. เข้ามาชี้แจง แถลงไข กลัวจะเข้าใจผิดกันไปใหญ่ แล้วเกิดการทะเลาะโดยใช่เหตุน่ะจ่ะ

แสดงความคิดเห็น

อธิบาย แล้ว กลัวผู้มา อ่าน จะ งง ^^  โพสต์ 2011-3-22 23:31
ป่าว จ๊ ทั้งนี้ ทั้งนั้น ผม แค่ เพิ่ม ความเข้าใจ ให้ กระทู้ ครับ เห็นพี่  โพสต์ 2011-3-22 23:30
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | สมัครสมาชิก

รายละเอียดเครดิต

รายชื่อผู้กระทำผิด|Archiver|ดิสคัส ไทย Follow us: Become a fan on facebook. Follow us on Twitter.

GMT+7, 2024-11-23 01:27

Powered by Discuz! X3.4, Rev.66

Copyright © 2001-2021 Tencent Cloud. Licensed

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้