ถามเรื่อง url ภาษาไทยกับเครื่องหมาย %

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

Meen2007
PHP Jr. Member
PHP Jr. Member
โพสต์: 22
ลงทะเบียนเมื่อ: 12/04/2011 6:00 pm

ถามเรื่อง url ภาษาไทยกับเครื่องหมาย %

โพสต์ที่ยังไม่ได้อ่าน โดย Meen2007 »

SMF ทำ url ภาษาไทย เมื่อใส่เครื่องหมาย % ผสมเข้าไปในหัวข้อ เมื่อคลิกที่หัวข้อเพื่อเข้าไปยังกระทู้มันจะกลายเป็น Bad Request เข้าไม่ได้เพราะมี % เป็นต้นเหตุ แบบนี้นอกจากจะงดการใส่สัญลักษณ์พิเศษแล้ว จะมีวิธีแก้ให้สามารถใส่ สัญลักษณ์พิเศษ % ได้ใหมครับ

./Source/MessageIndex.php
ค้นหา

โค้ด: เลือกทั้งหมด

'time' => timeformat($row['first_poster_time']),
'timestamp' => forum_time(true, $row['first_poster_time']),
'subject' => $row['first_subject'],
'preview' => $row['first_body'],
'icon' => $row['first_icon'],
'icon_url' => $settings[$context['icon_sources'][$row['first_icon']]] . '/post/' . $row['first_icon'] . '.gif',
'href' => $scripturl . '?topic=' . $row['id_topic'] . '.0',
'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.0">' . $row['first_subject'] . '</a>'
ทับของเดิม

โค้ด: เลือกทั้งหมด

'time' => timeformat($row['first_poster_time']),
'timestamp' => forum_time(true, $row['first_poster_time']),
'subject' => $row['first_subject'],
'preview' => $row['first_body'],
'icon' => $row['first_icon'],
'icon_url' => $settings[$context['icon_sources'][$row['first_icon']]] . '/post/' . $row['first_icon'] . '.gif',
'href' => $scripturl . '?topic=' . $row['id_topic'] . '.0',
$keyword= preg_replace("~[\s]+~","-",$row['first_subject']),
$keyword = urlencode(preg_replace('~[^a-z0-9ก-๙\.\-\_]~iu','',$keyword)),
'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.0/' . str_replace(" ","-",$row['first_subject']) . '" target="_blank">' . $row['first_subject'] . '</a>'
/*'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.0[color=red][b]/' . urlencode(preg_replace('~[^a-z0-9ก-๙\.\-\_]~iu','',$keyword)) . '[/b][/color]">' . $row['first_subject'] . '</a>'*/
/*'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.0/' . urlencode($keyword) . '" target="_blank">' . $row['first_subject'] . '</a>'*/
ที่มาโค้ด : thaiseoboard.com/index.php?topic=288150.0
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ถามเรื่อง url ภาษาไทยกับเครื่องหมาย %

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ข้อความที่เอามาทำ url เป็น UTF หรือเปล่า
ได้ ก็ทำ urlencode ต่อก็ไม่น่าจะมีปัญหา
แต่ ถ้าทางฝั่ง phpBB เค้าจะมี ฟังก์ชั่นไว้สำหรับ จัดการข้อมูล utf-8 และ url ให้นะครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
Meen2007
PHP Jr. Member
PHP Jr. Member
โพสต์: 22
ลงทะเบียนเมื่อ: 12/04/2011 6:00 pm

Re: ถามเรื่อง url ภาษาไทยกับเครื่องหมาย %

โพสต์ที่ยังไม่ได้อ่าน โดย Meen2007 »

mindphp เขียน:ข้อความที่เอามาทำ url เป็น UTF หรือเปล่า
ได้ ก็ทำ urlencode ต่อก็ไม่น่าจะมีปัญหา
แต่ ถ้าทางฝั่ง phpBB เค้าจะมี ฟังก์ชั่นไว้สำหรับ จัดการข้อมูล utf-8 และ url ให้นะครับ
เซฟเป็นภาษาไทยใช้ได้ปกติครับ เพียงแต่พอใส่สัญลักษณ์ % เพิ่มเข้าไปด้วยเลยเกิดเป็น Bad Request
urlencode จะลองศึกษาดูนะครับ
และจากโค้ดด้านบนถ้าจะแก้ไข แนะแนวหน่อยได้ใหมครับว่าควรจะแก้อย่างไรจึงจะใช้ สัญลักษณ์ % ได้
ขอบคุณครับ
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ถามเรื่อง url ภาษาไทยกับเครื่องหมาย %

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

% เป็น สัญลักษณ์ ไว้แทนอักขระ อื่นๆ ถ้าใช้ใช้ % ใช้นี่แทน
% = %25
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
Meen2007
PHP Jr. Member
PHP Jr. Member
โพสต์: 22
ลงทะเบียนเมื่อ: 12/04/2011 6:00 pm

Re: ถามเรื่อง url ภาษาไทยกับเครื่องหมาย %

โพสต์ที่ยังไม่ได้อ่าน โดย Meen2007 »

ทดลองดูแล้วครับ เข้าหัวข้อได้ เพียงแต่ มี %25 ที่หัวข้อด้วย ในกรณีที่เรารู้เราจะเว้นไม่ใส่สัญลักษณ์แบบนี้ที่หัวข้อ แต่จะหาทางแก้ไขไว้สำหรับสมาชิกท่านอื่นๆด้วย (แต่ก็คงมีน้อยมาก) ถ้าหากสามารถแก้ไขได้จากโค้ดด้านบนเลยก็คงจะดี ผมค้นหาไปเจอที่ php.net/manual/en/function.urlencode.php กำลังงมหาคำตอบอยู่ครับ php ผมไม่ค่อยแข็งแรงสักเท่าไหร่แต่จะลองดูครับ หากแก้ไม่ได้ก็คงปล่อยไป ช่างสมาชิกอยากโพสต์ สัญลักษณ์พิเศษเองก็ช่วยไม่ได้ ขอบคุณครับที่แนะแนวทางให้
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ถามเรื่อง url ภาษาไทยกับเครื่องหมาย %

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

เขียน function มาแปลง สัญลักพิเศษต่างๆ ก่อน เข้า ฟังก์ชั่น แปลงข้อความ ของ SMF
หลักการค้นหา และ แทนที่ก็ใช้ได้แล้วครับ

แนะนำ การเขียนโปรแกรม ถ้ารู้ว่าจะเกิด bug ควรป้องกันมันก่อน
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
Meen2007
PHP Jr. Member
PHP Jr. Member
โพสต์: 22
ลงทะเบียนเมื่อ: 12/04/2011 6:00 pm

Re: ถามเรื่อง url ภาษาไทยกับเครื่องหมาย %

โพสต์ที่ยังไม่ได้อ่าน โดย Meen2007 »

mindphp เขียน:เขียน function มาแปลง สัญลักพิเศษต่างๆ ก่อน เข้า ฟังก์ชั่น แปลงข้อความ ของ SMF
หลักการค้นหา และ แทนที่ก็ใช้ได้แล้วครับ

แนะนำ การเขียนโปรแกรม ถ้ารู้ว่าจะเกิด bug ควรป้องกันมันก่อน
ทำได้แล้วครับพี่ ขอบคุณมากๆ ย่อจากโค้ดด้านบนเหลือเพียงด้านล่าง

โค้ด: เลือกทั้งหมด

$search_str = array(' ', '%'),
$replace = array('-', '%25'),
'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.0/' . str_replace($search_str, $replace, $row['first_subject']) . '" target="_blank">' . $row['first_subject'] . '</a>'
./Source/MessageIndex.php
ค้นหา

โค้ด: เลือกทั้งหมด

'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.0">' . $row['first_subject'] . '</a>'
แทนที่

โค้ด: เลือกทั้งหมด

$search_str = array(' ', '%'),
$replace = array('-', '%25'),
'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.0/' . str_replace($search_str, $replace, $row['first_subject']) . '" target="_blank">' . $row['first_subject'] . '</a>'
ตอบกลับโพส

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 112