2011年2月23日

[PHP] big5轉utf-8被吃字的問題(mb_convert_encoding)

文字轉碼都習慣用iconv(),終於解決掉「許蓋功」問題卻又發現會吃掉字
例如宏碁的碁,雖然也找到方式//TRANSLIT//IGNORE去處理,但終究沒有正確顯示「碁」
使用者可不會這樣放過你

php有提供一個方法叫mbstring
首先必須在php.ini
將 extension=php_mbstring.dll打開,並重開apache

接下來轉碼的方式
mb_convert_encoding(要被轉的字串,'目標碼','原來編碼');

相關Blogger: [PHP]iconv轉碼發生被截字的問題

[PHP][Smarty] 安裝smartySOP

1.下載smarty檔,解開並放在php include夾下
2.Smarty-3.x.x資料夾下可看見
    demo資料夾------->將此夾放在預設網站下
    libs資料夾------->將裡面內容放在include/class/Smarty/,其中有兩個資料夾及Smarty.class.php就是smarty引擎
  
3.demo/config.php
    <?php
        include "class/Smarty/Smarty.class.php";
        define('__SITE_ROOT','D:/PHPWeb/demo');// 最後沒有斜線
        $tpl = new Smarty();
        $tpl->template_dir = __SITE_ROOT . "/templates/";
        $tpl->compile_dir = __SITE_ROOT . "/templates_c/";
        $tpl->config_dir = __SITE_ROOT . "/configs/";
        $tpl->cache_dir = __SITE_ROOT . "/cache/";
        $tpl->left_delimiter = '<{';
        $tpl->right_delimiter = '}>';
    ?> 

4.demo/templates/test.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title><{$title}></title>
</head>
<body>
<{$content}>
</body>
</html>

5.demo/index.php

<?php
    require "config.php";
    $tpl->assign("title", "測試用的網頁標題");
    $tpl->assign("content", "測試用的網頁內容");

    $tpl->display('test.html');
?>


6.IE 查看127.0.0.1/demo/index.php 若網頁出現「測試用的網頁內容」則表示成功

【註】
紅色標示:表示需要記得修改的內容
藍色標示:Smarty架構的重點!


====================================================
有趣的smarty,安裝只要copy需要的資料夾即可馬上使用!

設計各式樣本在templates下,只要每頁都有{$content}, {$title}
就可由index.php裡去控制要顯示那一種樣本(html)
另外
也能從index.php去控制每次秀的內容不同
例 if(早上) { $tpl->assign("content", "早安"); } else {  $tpl->assign("content", "晚安"); } 之類運用