หน้า 1 จากทั้งหมด 1

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

โพสต์แล้ว: 06/07/2014 9:11 pm
โดย 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

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

โพสต์แล้ว: 06/07/2014 11:35 pm
โดย mindphp
ข้อความที่เอามาทำ url เป็น UTF หรือเปล่า
ได้ ก็ทำ urlencode ต่อก็ไม่น่าจะมีปัญหา
แต่ ถ้าทางฝั่ง phpBB เค้าจะมี ฟังก์ชั่นไว้สำหรับ จัดการข้อมูล utf-8 และ url ให้นะครับ

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

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

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

โพสต์แล้ว: 08/07/2014 11:22 pm
โดย mindphp
% เป็น สัญลักษณ์ ไว้แทนอักขระ อื่นๆ ถ้าใช้ใช้ % ใช้นี่แทน
% = %25

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

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

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

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

แนะนำ การเขียนโปรแกรม ถ้ารู้ว่าจะเกิด bug ควรป้องกันมันก่อน

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

โพสต์แล้ว: 09/07/2014 2:51 am
โดย 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>'