[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=0 ; $i< strlen($tis) ; $i++ ){
$s = substr($tis, $i, 1);
$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 .= chr( 0xE0 | ($unicode >> 12) );
$utf8 .= chr( 0x80 | (($unicode >> 6) & 0x3F) );
$utf8 .= chr( 0x80 | ($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 (ชาวบ้านเขาเล่นกันเป็นชาติแล้ว)