[Programming] Thai Language in Dynamic URL (For SEO)

เริ่มโดย EThaiZone, 16 มกราคม 2009, 00:14:55

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

EThaiZone

[Background Music] Epik High - One (feat. Jisun - Loveholic)

งานทิ้งทวนครับ ก่อนเก็บตัวฝึกเขียนโปรแกรม (และเคลียร์งานให้หมด ลูกค้ารอตอนผมมือหัก)

พอดีเห็นในกระทู้นี้
http://www.thaiseoboard.com/index.php/topic,48792.0.html

คิดว่ามีอีกหลายคนคงไม่เข้าใจ และอยากทำ
ฐานะเรากลุ่มคนทำเว็บเล็กๆ ก็น่าจะสู้กับเว็บใหญ่ได้บ้าง
เพราะเว็บใหญ่ ดันเอาไปหากินกับสแปมคีย์หมดเลย
:(

ผมคงไม่อธิบาย เพราะอธิบายไปพาลจะไม่เก็ทเอา
ผมเองไปเว็บต่างประเทศค้นหลายครั้ง บอกตามตรงไอ้ที่เขาเขียนยืดๆ เป็นอังกฤษผมไม่อ่านมันเลย
สนแต่โค้ดโปรแกรม ขอให้มีเถอะ เดี๋ยวมันก็เก็ทเอง

เป็นของเก่าที่เคยทำเล่นๆ มาก็เลยเอามาแปะให้ไปทดลองเล่นกัน
แก้ไขนิดหน่อยว่าทำไงให้เข้าใจง่ายๆ ^^"

ก็มีไฟล์สองตัวให้ไปเล่นกันนะครับ ใครยังไม่เก็ทอีก
แนะนำคืนวิธีไปแล้วเลิกเขียนโปรแกรมดีกว่า = =a

เรื่องที่อยากบอกมีแค่ว่า
ไฟล์ทั้งหมดเซฟเป็น Ascii ปกติ
จึงมีการใช้ฟังค์ชั่น tis2utf8 กับ String ที่เป็นภาษาไทยที่เขียนบนไฟล์ php โดยตรง
( Ex: $var='สวัสดี'; ) เพื่อแปลงเป็น UTF8 ให้หมด

ดังนั้นกรณีที่ใครจะเล่นบนไฟล์ที่เซฟเป็น utf8 อยู่แล้ว
ก็ไม่จำเป็นต้องใช้ tis2utf8 ครับ
แต่ว่าถ้าการ include เอา string จากไฟล์อื่น
งานนี้ทดลองกันเองเป็นเคสๆ ไปนะครับ มันมีแค่ไม่กี่อย่างเอง
ถ้าไม่ใช่ UTF8 ก็แปลงซะ ถ้าเป็นอยู่แล้ว ก็ปล่อยไป

File: index.php
<?
//เครดิตจัดทำโดย EThaiZone
?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<pre>
<?php
define
('PHPSELF'basename($_SERVER['PHP_SELF']));
define('LOCALPATH'dirname(__FILE__)."/");
define('HOSTPATH'preg_replace("#(".PHPSELF.")$#""""http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']));
define('SUBPATH'preg_replace("#(".PHPSELF.")$#"""$_SERVER['PHP_SELF']));

function 
tis2utf8($tis) {
   for( 
$i=$istrlen($tis) ; $i++ ){
      
$s substr($tis$i1);
      
$val ord($s);
      if( 
$val 0x80 ){
         
$utf8 .= $s;
      } elseif ( ( 
0xA1 <= $val and $val <= 0xDA ) or ( 0xDF <= $val and $val <= 0xFB ) ){
         
$unicode 0x0E00 $val 0xA0;
         
$utf8 .= chr0xE0 | ($unicode >> 12) );
         
$utf8 .= chr0x80 | (($unicode >> 6) & 0x3F) );
         
$utf8 .= chr0x80 | ($unicode 0x3F) );
      }
   }
   return 
$utf8;
}

$head = <<<EOF
<h1>ตัวอย่างกรณีศึกษา - การทำ dynamic url แบบภาษาไทยบน PHP (รองรับ SEO)</h1>
<h2>จัดทำโดย EThaiZone</h2>
<b>**ทุกอย่างที่แสดงผล (ตัวอักษร ค่าจาก 
$_GET) อยู่ในรูป UTF-8 ทั้งหมด แต่ไฟล์ php เป็น Ascii ธรรมดา</b>
<hr/>
EOF;
echo 
tis2utf8($head);

if(!empty(
$_GET['url']))
$res "\"".$_GET['url']."\" - (This result is <b>URL</b>.)";
else 
if(!empty(
$_GET['box']))
$res "\"<a href=\"".HOSTPATH.$_GET['box']."\"><b>".$_GET['box']."</b></a>\" - (This result is <b>[input form] [GET Method]</b>.)";
else 
if(!empty(
$_POST['box']))
$res "\"<a href=\"".HOSTPATH.$_POST['box']."\"><b>".$_POST['box']."</b></a>\" - (This result is <b>[input form] [POST Method]</b>.)";
else 
$res tis2utf8("คุณอยู่ในหน้าหลัก เชิญคลิกลิงค์ หรือทดลองกรอกแบบฟอร์มแล้วส่ง");

echo 
"<b>Result : </b>".$res."<hr/>";

echo 
'<a href="'.HOSTPATH.'">Main</a><br/>';

$keyword "สวัสดีโลก!";
echo 
'<a href="'.HOSTPATH.urlencode(tis2utf8($keyword)).'">'.tis2utf8($keyword).'</a><br/>';
$keyword "สวัสดีพระเจ้า! (Oh My God)";
echo 
'<a href="'.HOSTPATH.urlencode(tis2utf8($keyword)).'">'.tis2utf8($keyword).'</a><br/>';

echo 
'
<b>Example Send-Recv UTF8 String</b>

<form action="'
.HOSTPATH.'" method="get">[GET Method]
<input type="text" name="box" value="'
.$_GET['box'].'">
<input type="submit" value="Send">
</form>
<form action="'
.HOSTPATH.'" method="post">[POST Method]
<input type="text" name="box" value="'
.$_POST['box'].'">
<input type="submit" value="Send">
</form>
'
;


?>

</pre>


File: .htaccess
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?url=$1 [L]


หรือดาว์นโหลดไฟล์ทั้งสองจากที่นี้
http://www.upload-thai.com/download.php?id=bfc3c7e789b85acdc4605306ca8dfe0f

ทดลองแล้ว ทั้ง IE FF และ GGChrome ใช้งานได้ปกติ

จะมีก็แต่ .htaccess ที่ผมไม่ได้เขียนอ้างอิงแบบ Full เพราะอาจมีคนเอาไปรันต่างโฟลเดอร์
เช่นถ้าไปทดสอบบน http://localhost/testkit_htaccess_url_in_thai/

.htaccess จะเป็น
Options +FollowSymLinks
RewriteEngine On
RewriteBase    /testkit_htaccess_url_in_thai/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /testkit_htaccess_url_in_thai/index.php?url=$1 [L]


###############################

ถ้ามีประโยชน์ก็บอกกันบ้างนะครับ แต่ว่าคงไม่ตอบ PHP อีกนาน (จริงๆ คือไม่มีเวลาตอบ)
ตอนนี้ดันคลั่ง GUI แถมเพิ่งคิดจะเล่น Glade (ชาวบ้านเขาเล่นกันเป็นชาติแล้ว)

:P

EThaiZone

ลืมบอก ขอความกรุณา อย่าทำสแปมคีย์ไทยนะครับ

แค่เท่านี้ใน GG เว็บไทยก็จะบรรลัยแล้ว
มีแต่โป๊ๆ เปลือยๆ จน...  สุดบรรยาย ลูกหลานไทย
"บางเว็บมันไร้จรรยาบรรณก็ปล่อยมันไป"

:-X

teefouay

เว็บสองภาษา อยากทำแบบ ถ้า ไอพีต่างประเทศก็ให้เรียกหน้า อังกฤษ ถ้าไทยก็เรียกหน้าไทยน่ะครับ
[direct=http://www.camping.in.th/เต็นท์-Tents]เต็นท์[/direct][direct=http://www.creamsamunpaijula.com]ครีมสมุนไพรจุฬา[/direct] [direct=http://www.naenum.com]ลงโฆษณา Google[/direct] [direct=http://www.guidetourthailand.com]ท่องเที่ยวไทย[/direct] [direct=http://www.camping.in.th/ถุงนอน-SleepingBag]ถุงนอน[/direct]

siamman

อ้างถึงจาก: EThaiZone ใน 16 มกราคม 2009, 00:21:27
ลืมบอก ขอความกรุณา อย่าทำสแปมคีย์ไทยนะครับ

แค่เท่านี้ใน GG เว็บไทยก็จะบรรลัยแล้ว
มีแต่โป๊ๆ เปลือยๆ จน...  สุดบรรยาย ลูกหลานไทย
"บางเว็บมันไร้จรรยาบรรณก็ปล่อยมันไป"

:-X

เห็นด้วยครับ

L

เป็นไปได้น่าจะมีหน่วยงานมาดูแลอย่างจริงจังด้วยซ้ำ จะเป็นประโยชน์อย่างยิ่งกับทุกสิ่งทุกอย่าง ขอบคุณ EThaiZone ณ ที่นี้ด้วยครับ

EThaiZone

อ้างถึงจาก: teefouay ใน 16 มกราคม 2009, 00:45:55
เว็บสองภาษา อยากทำแบบ ถ้า ไอพีต่างประเทศก็ให้เรียกหน้า อังกฤษ ถ้าไทยก็เรียกหน้าไทยน่ะครับ

อันนี้แค่บอก หรือถามครับ  :P

ถ้าถามก็หาพวก ip2location มาใช้ครับ (ฐานข้อมูลเสียตังค์ แต่ก็มีตัวฟรี และเถื่อน)
แล้ววิธี ในบอร์ดก็มีครับ ค้นหามา apply ได้เลย

แต่ที่ผมเคยใช้ มันชื่อ geoip
เมื่อก่อนใช้กรองไม่ให้แสดง adsense กับคนไทย

เมื่อก่อนยังกับยุคมืด ไม่กล้าให้คนไทยเห็น adsense ของเรา
กลัวโดนเกรียนบอม  :-X

Dr.K

[direct=https://www.thaihealth.net/blog/seo_doctor/]seo blog[/direct]|[direct=https://netplushost.com]netplushost[/direct]
[direct=https://pattayawebmarketing.com/pattaya-seo]pattaya seo[/direct]
[direct=https://dochost.net]seo hosting[/direct]

teefouay

อ้างถึงจาก: EThaiZone ใน 16 มกราคม 2009, 01:04:36
อ้างถึงจาก: teefouay ใน 16 มกราคม 2009, 00:45:55
เว็บสองภาษา อยากทำแบบ ถ้า ไอพีต่างประเทศก็ให้เรียกหน้า อังกฤษ ถ้าไทยก็เรียกหน้าไทยน่ะครับ

อันนี้แค่บอก หรือถามครับ  :P

ถ้าถามก็หาพวก ip2location มาใช้ครับ (ฐานข้อมูลเสียตังค์ แต่ก็มีตัวฟรี และเถื่อน)
แล้ววิธี ในบอร์ดก็มีครับ ค้นหามา apply ได้เลย

แต่ที่ผมเคยใช้ มันชื่อ geoip
เมื่อก่อนใช้กรองไม่ให้แสดง adsense กับคนไทย

เมื่อก่อนยังกับยุคมืด ไม่กล้าให้คนไทยเห็น adsense ของเรา
กลัวโดนเกรียนบอม  :-X

ถามครับ.....
ถ้าในบอร์ด ค้นหาคำว่าอ่ะไรครับ ช่วยชี้แนะด้วยครับ
เหตุ เพราะสงสัยเห็นเว็บฝรั่งบางเว็บทำครับ


[direct=http://www.camping.in.th/เต็นท์-Tents]เต็นท์[/direct][direct=http://www.creamsamunpaijula.com]ครีมสมุนไพรจุฬา[/direct] [direct=http://www.naenum.com]ลงโฆษณา Google[/direct] [direct=http://www.guidetourthailand.com]ท่องเที่ยวไทย[/direct] [direct=http://www.camping.in.th/ถุงนอน-SleepingBag]ถุงนอน[/direct]

EThaiZone

ก็ลองค้นด้วย ip2location ดูครับ

ที่เหลือก็แค่หาทางเช็คประเทศของ ip คนที่เข้ามาดูให้ได้ครับ
ส่วนมาก class ที่ใช้เช็ค ip ที่ผมแนะนำ
ก็ xip (ลองเอาคำนี้ค้นในบอร์ดดู)

:P

เกรียนพันธ์แท้

ห้ามใส่ลายเซนต์เกี่ยวกับการเมือง

chanun

#10
ขอถามหนิดได้ไหมครับคือแบบว่าพึ่งจะศึกษา
การทำแบบนี้ชื่อเป้นไทย ต้องมีไฟล์ภาษาไทยด้วยไหมครับ
เช่น http://xxx.com/บ้าน
แบบนี้ต้องมี บ้าน.php ไหมครับ หรือ ว่ามันเปลี่ยนจาก index.php เป็น บ้าน แทนครับ


ขออถามอีกหนิดนะครับ
มันคือวิธีการทำให้สามารถอ่านไฟล์ที่เป็นภาษาไทยได้ใช่หรือเปล่าครับ คือผมทดลองทำแล้วแต่ไม่รุ้ว่าจะตรงตามวัตถุประสงค์หรือเปล่าโดย
ผมลอง
localhost/บ้าน
localhost/เพชรนิจจินดา
localhost/หาดวกหด่สกหด
มันก็ติดแบบนี้แสดงว่าได้แล้วหรือครับ
แล้วเวลาไปโปรโมทให้ได้แบ็คลิงค์นี้ไปโปรโมทแบบนี้หรือครับ
localhost/บ้าน
localhost/เพชรนิจจินดา


ซื้อเครื่องเล่นเกมคุณภาพและเช็คราคา PS4 PS3 PSP XBOX WII 3DS ได้ที่นี้
[direct=http://www.pspinw.com]psp ราคา[/direct]

ColdMoney

[direct=https://www.jumnong.com]รับจำนอง[/direct] [direct=https://burapasup.com]รับซื้อบ้าน[/direct] [direct=https://kadsan.com]สินค้าราคาถูก[/direct] [direct=https://checkcheap.com]เปรียบเทียบราคา[/direct]

nopchan

อ้างถึงจาก: EThaiZone ใน 16 มกราคม 2009, 01:04:36
อ้างถึงจาก: teefouay ใน 16 มกราคม 2009, 00:45:55
เว็บสองภาษา อยากทำแบบ ถ้า ไอพีต่างประเทศก็ให้เรียกหน้า อังกฤษ ถ้าไทยก็เรียกหน้าไทยน่ะครับ

อันนี้แค่บอก หรือถามครับ  :P

ถ้าถามก็หาพวก ip2location มาใช้ครับ (ฐานข้อมูลเสียตังค์ แต่ก็มีตัวฟรี และเถื่อน)
แล้ววิธี ในบอร์ดก็มีครับ ค้นหามา apply ได้เลย

แต่ที่ผมเคยใช้ มันชื่อ geoip
เมื่อก่อนใช้กรองไม่ให้แสดง adsense กับคนไทย

เมื่อก่อนยังกับยุคมืด ไม่กล้าให้คนไทยเห็น adsense ของเรา
กลัวโดนเกรียนบอม  :-X

พอดี เลยครับ กำลัง หา อยู่เหมือนกัน ครับ thanks +1 ครับ

EThaiZone

อ้างถึงจาก: chanun ใน 16 มกราคม 2009, 05:00:23
ขอถามหนิดได้ไหมครับคือแบบว่าพึ่งจะศึกษา
การทำแบบนี้ชื่อเป้นไทย ต้องมีไฟล์ภาษาไทยด้วยไหมครับ
เช่น http://xxx.com/บ้าน
แบบนี้ต้องมี บ้าน.php ไหมครับ หรือ ว่ามันเปลี่ยนจาก index.php เป็น บ้าน แทนครับ
พูดให้ถูกคือทุกอย่างจะโดนส่งไป index.php หมดเลยครับ
ไม่มีตัวไฟล์จริงๆ อยู่เลย

อ้างถึงจาก: chanun ใน 16 มกราคม 2009, 05:00:23
ขออถามอีกหนิดนะครับ
มันคือวิธีการทำให้สามารถอ่านไฟล์ที่เป็นภาษาไทยได้ใช่หรือเปล่าครับ คือผมทดลองทำแล้วแต่ไม่รุ้ว่าจะตรงตามวัตถุ
ไม่ใช่ครับ แต่เป็นวิธีให้รับค่า url ที่เป็นภาษาไทย

อ้างถึงจาก: chanun ใน 16 มกราคม 2009, 05:00:23
ประสงค์หรือเปล่าโดย
ผมลอง
localhost/บ้าน
localhost/เพชรนิจจินดา
localhost/หาดวกหด่สกหด
มันก็ติดแบบนี้แสดงว่าได้แล้วหรือครับ
แล้วเวลาไปโปรโมทให้ได้แบ็คลิงค์นี้ไปโปรโมทแบบนี้หรือครับ
localhost/บ้าน
localhost/เพชรนิจจินดา
ตามนั้นเลยครับ

---------------------------------------

โค้ดข้างบนเหมาะกับคนที่ใช้ php ในระดับ advance แล้ว
แต่ยังติดปัญหาเรื่อง URL ภาษาไทย

แต่จริงๆ ระดับเริ่มต้นก็ใช้ได้ คำถามทุกข้อไม่จำเป็นต้องถามผมหรอกครับ
คำตอบอยู่ในโค้ดที่ผมเขียนให้ไปเี่นี่ยแหละ พยายามทำความเข้าใจสักนิดครับ

::)

ttuunn

คือผมลองศึกษาดูแล้วก็ใช้ได้เลยนะครับ
มันขึ้นภาษาไทย

ติดตรง เวลาเรากด link ที่เราใส่ไปในช่อง POST
Result : "ภาษาไทย" - (This result is URL.)

ข้อมูลที่ select มาก็จะหายไป

[direct=http://www.click2studio.com/vip-truemoney/index.php][/direct]
[direct=http://www.thaiseoboard.com/index.php/topic,355732.0.html]ขายสคริปวีดีโอออนไลน์ ตัดบัตรเงินสด Auto ส่ง User Pass ไปยัง sms มือถือท่าน[/direct]
[direct=http://www.click2studio.com]รับทำเว็บรับทำสคริปวาไรตี้,ภาพยนตร์,เว็บบอร์ด,หาเพื่อน,อัลบัม,อื่นๆมากมาย  เว็บเป็นเอกลักษณ์ไม่จำเจ[/direct]

pugkung

เข้ามาบอกว่าเอาคำนี้ไปค้นใน GG  Glade  ไม่รู้ว่ามันคืออะไรแต่รู้ว่า EthaiZone สนใจ

เลยตามหาอ่าน ดันไปอ่านเรื่อง Python กับ Ruby ซะนี้  ;D

แต่ก็ขอบคุณครับทำให้เปิดโลกขึ้นอีกเยอะเลย  ::)

EThaiZone

อ้างถึงจาก: ttuunn ใน 16 มกราคม 2009, 09:18:58
คือผมลองศึกษาดูแล้วก็ใช้ได้เลยนะครับ
มันขึ้นภาษาไทย

ติดตรง เวลาเรากด link ที่เราใส่ไปในช่อง POST
Result : "ภาษาไทย" - (This result is URL.)

ข้อมูลที่ select มาก็จะหายไป


จุดประสงค์ที่ทำโค้ดนี้ ก็อยากให้เข้าใจถึงการส่งต่อข้อมูลในรูป UTF8
เพราะ UTF8 มีความจำเป็นมากในการให้ใช้ภาษาำไทย

จุดนั้นไม่ใช่ปัญหา ที่ทำก็เพื่อให้เข้าใจว่าค่าที่ได้รับจากแบบฟอร์ม เมื่อนำแสดงบนหน้าเว็บจะเป็นอย่างไร
และถ้าสังเกตดีๆ ค่าข้อความไทยในตัวไฟล์ php ทุกจุด
ผมต้องใช้ tis2utf8 แปลงตลอด
แล้วทำไมค่าจากแบบฟอร์ม ผมถึงไม่ต้องแปลง มันก็แสดงผลได้่

จุดนี้แหละครับที่อยากให้สังเกตได้เอง  ::)

--------------------------------

ถ้าคนอื่นใครไม่เก็ท ก็ต้องไปทำความเข้าใจก่อนว่า Ascii หรือที่เขาออกเสียงกันว่าแอสกี้
มันเป็นยังไง แล้ว UTF8 เป็นยังไง ต่างกันยังไง โครงสร้างมันเป็นยังไง

และทั้งหมดนี้ Ascii และ UTF8 จริงๆ มันคืออะำไร  :)

อ้างถึงจาก: pugkung ใน 16 มกราคม 2009, 09:22:53
เข้ามาบอกว่าเอาคำนี้ไปค้นใน GG  Glade  ไม่รู้ว่ามันคืออะไรแต่รู้ว่า EthaiZone สนใจ

เลยตามหาอ่าน ดันไปอ่านเรื่อง Python กับ Ruby ซะนี้  ;D

แต่ก็ขอบคุณครับทำให้เปิดโลกขึ้นอีกเยอะเลย  ::)

Glade มันรองรับภาษาอื่นได้อีกเยอะครับ แต่บางก็ไม่ port โดยตรงก็มี
บางภาษาเลยต้องให้ Glade ออกเป็น xml แล้วแปลงมันเป็นภาษานั้นๆ อีกที
พูดให้ถูกคือมันครบครันในหลายภาษาจริงๆ ในด้านการเขียน GUI
(แต่ก็ทุกๆ ภาษาเลยนิหว่าที่เป็น GUI  :P)

มีภาษาหนึ่งที่ผมว่ามันไม่น่าจะมีกับเขาด้วย ก็ PHP  :P
ใครเคยลองเขียน PHP GTK ก็บอกบ้างนะครับ อยากเห็นผลงานบ้าง (ผมยังไม่เคยเขียน)
http://gtk.php.net/
http://www.gnope.org/
http://glade.gnome.org/

au8ust

อ้างถึงจาก: EThaiZone ใน 16 มกราคม 2009, 01:04:36
อ้างถึงจาก: teefouay ใน 16 มกราคม 2009, 00:45:55
เว็บสองภาษา อยากทำแบบ ถ้า ไอพีต่างประเทศก็ให้เรียกหน้า อังกฤษ ถ้าไทยก็เรียกหน้าไทยน่ะครับ

อันนี้แค่บอก หรือถามครับ  :P

ถ้าถามก็หาพวก ip2location มาใช้ครับ (ฐานข้อมูลเสียตังค์ แต่ก็มีตัวฟรี และเถื่อน)
แล้ววิธี ในบอร์ดก็มีครับ ค้นหามา apply ได้เลย

แต่ที่ผมเคยใช้ มันชื่อ geoip
เมื่อก่อนใช้กรองไม่ให้แสดง adsense กับคนไทย

เมื่อก่อนยังกับยุคมืด ไม่กล้าให้คนไทยเห็น adsense ของเรา
กลัวโดนเกรียนบอม  :-X
ผมใช้อันนี้ http://www.maxmind.com/app/mod_geoip

mikeyx

กำลังศึกษาครับขอบคุณมาก  :-*

jabranjabran

www.bagsbybond.com กระเป๋าแฟชั่นผู้ชายเท่ห์ๆ
www.iambron.com แรงบันดาลใจ พัฒนาตัวเอง