部落格文章訂閱


貧窮不能等,因為時間久了,你就會貧窮習慣了;
夢想不能等,因為努力晚了,人老就無能為力了;
學習不能等,因為懂得少了,就沒本事夢想成真了;
健康不能等,因為身體垮了,人生的一切就都沒了。


自訂搜尋

找不到想要的文章嗎? 請直接再下面的搜尋框裡輸入要查詢文章內容關鍵字 ,就能夠更快速的取得想要閱讀的問題喔~~謝謝大家的支持與愛護~若有任何建議事項, 歡迎透過留言板留言給我喔!!


  • 你不能決定生命的長度,但可以控制它的寬度;
  • 你不能左右天氣,但可以改變心情;
  • 你不能改變容顏,但可以展現笑容;
  • 你不能控制他人,但可以掌握自己;
  • 你不能預知明天,但可以利用今天;
  • 你不能樣樣勝利,但可以事事盡力。

free counters

目前分類:PHP程式設計 (51)

瀏覽方式: 標題列表 簡短摘要

一般情况下我们使用substr截取汉字可能会遇到乱码问题。因为汉字是双字节的,当被截取了一个字节时,这个汉字就无法显示,乱掉了。

其实解决很简单,看下面的截取函数:

//截取超长字符串
function curtStr($str,$len=30){

Frank 發表在 痞客邦 留言(0) 人氣()

Excel 預設是沒有法辦直接讀取 UTF8 格式的文件 , 所以每次開啟 UTF8 格式的 CSV 檔 就會顯示亂碼
今天在閒逛 , 剛好爬到這篇文 ,就轉貼給讀者參考參考 , 請多多指教 ^^ (測試是OK無誤的)

範例:
$fp = fopen("report.csv","w");

Frank 發表在 痞客邦 留言(1) 人氣()

当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF- 8,或者UTF-8和GBK(这里主要是对于cp936的判断),网上说是由于字符短是,mb_detect_encoding会出现误判。


例如:

Frank 發表在 痞客邦 留言(0) 人氣()

 Cookie真是一个伟大的发明,它允许web开发者保留他们的用户的登录状态。然而,当你的站点或网络
有一个以上的域名时就会出现问题了。

在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名。因此,如果在浏览器中对一个域名设置了一个cookie,这个 cookie对于其它的域名将无效。如果你想让你的用户从你的站点中的其中一个进行登录,同时也可以在其它域名上进行登录,这可真是一个大难题。

我的解决方案将使用下面的一般框架:

Frank 發表在 痞客邦 留言(0) 人氣()

今天在PHPCHINA的论坛上看到有人问如何在PHP程序中判断一个文本文件的编码格式,有些人说使用mb_detect_encoding函数来判断,但是经过楼主的测试无论文档采用什么编码格式,都只是显示UTF-8。我在PHP在线文档中查看到这个方法可以检测

    function isUTF8($str)
  1. {
  2. if ($str === mb_convert_encoding(mb_convert_encoding($str, "UTF-32", "UTF-8"), "UTF-8", "UTF-32"))
  3. {
  4. return true;
  5. }
  6. else
  7. {
  8. return false;
  9. }
  10. }

这个方法里面并没有使用mb_detect_encoding方法,而是使用mb_convert_encoding方法将原来的字符串转换后进行判断得出结果。我测试过该方法可以用来判断字符串是否采用UTF8的编码!


Frank 發表在 痞客邦 留言(0) 人氣()

PHP has mail() function to send an email to users. However this mail() will not work:

=> If sendmail (or compatible binary) is not installed

=> If Apache Web server / Lighttpd running in chrooted jail

=> And your smtp server needs an authentication before sending an email

=> Or you just need to send email using PHP PEAR

Frank 發表在 痞客邦 留言(0) 人氣()

如果要用php來抓取網頁,一般人最常想到的就是「fopen」這個函式了。但現在有了更強大的函式,「curl」,至於這個函式怎麼用呢?就往下看吧!

如使用mysql一樣,首先,我們必須先建立一個「curl」的連線,也因此,必須使用到「$ch = curl_init()」這個函式。而為了怕建立連線忘了關閉。因此,必須先寫好關閉的函式,「curl_close($ch)」。

接下來,你可以設定他截取網頁的選項,一般來說常用的有「CURLOPT_RETURNTRANSFER」、「CURLOPT_URL」、「CURLOPT_HEADER」、「CURLOPT_FOLLOWLOCATION」、「CURLOPT_USERAGENT」這幾個選項。而這幾個選項分別代表「將結果回傳成字串」、「設定截取網址」、 「是否截取header的資訊」、「是否抓取轉址」及「瀏覽器的user agent」。最後,再執行「curl_exec($ch)」以取出結果就可以了。

而以抓取yahoo為例,若我們要偽裝成google bot去抓取,那麼我們可以寫成下列的樣子。


Frank 發表在 痞客邦 留言(0) 人氣()

寫文件是一個程式設計師最最痛苦的事情之一,尤其是寫了一堆程式後有人要你把 Function ,Class 等等等等,寫成一份文件。

這事情不管你是寫 c/c++ , perl , ruby , php 都不例外。

phpDocumentor 是我們的救星! 只要在寫程式的時候,乖乖的寫一點註解,寫一點範例,多一點說明,注意一下格式,等到程式完工後,只要一個指令,就可以立刻把全部程式的說明文件產生出來,而且還有多種樣式可以選擇,甚至可以作成  PDF , CHM 喔…

好了,屁話不多說,先來說說怎麼裝上這好用的東西吧…

Frank 發表在 痞客邦 留言(0) 人氣()

      Yahoo!的Exceptional Performance团队为改善Web性能带来最佳实践。他们为此进行了一系列的实验、开发了各种工具、写了大量的文章和博客并在各种会议上参与探讨。最佳实践的核心就是旨在提高网站性能。
Excetional Performance团队总结出了一系列可以提高网站速度的方法。可以分为7大类34条。包括内容、服务器、cookie、CSS、JavaScript、图片、移动应用等七部分。

其中内容部分一共十条建议:

Frank 發表在 痞客邦 留言(0) 人氣()

當數字不足時, 通常會想到用 sprintf("%02d",$xxx); 去做補零的動作, 但是, 其實, 可以使用 php 的str_pad() 函式來解決這個需求 ,請參考以下的內容,謝謝

會找到有些使用sprintf函式的方法 像下面這樣

1.$var = 1;
2.echo sprintf("%02d", $var);

Frank 發表在 痞客邦 留言(1) 人氣()

最近因為協助做主機的移轉 ,而原本的程式使用了 Mcrypt 做加密的演算 ,因此 ,就正好 google 了相關的文章做學習 ,覺得這篇寫得還挺清礎 ,貼上來與大家分享

------

PHP Cryptography: An Introduction Using Mcrypt

作者:Robert Peake
翻译:ericfish

Frank 發表在 痞客邦 留言(0) 人氣()

Dear All,

      不知道大家有沒有製作電子報或寄發 HTML E-mail 到 Outlook 或 Gmail 的問題 ? 有些朋友問了我一些問題 ,費心說明後發覺 ,下面的這篇文章 ,寫得 非常的清礎 ,請有興趣研究 HTML E-mail 或電子報內容的朋友們 ,可以花時間看一下喔 ^_^ 謝謝大家對本部落格的支持。

Please note a version of this article is published at SitePoint which includes links to related articles on their site. Changes to this article are noted at the bottom of this article. This article has been online since 2004.

HTML email newsletters have come a long way in the past five years since this article was first written. They’re still a useful way to get a web page delivered to interested readers to encourage them to visit your website or have your readers perform an action. The email marketing process also has become routine.

Frank 發表在 痞客邦 留言(0) 人氣()

當寫入陣列時 ,系統 Log 出現 PHP Fatal error:  Cannot use string offset as an array in xxxx 訊息時 ,該如何解決 ?

其主要原因為 將要寫入的陣列不存在 (尚未被建立) ,因此 ,請加上

if(!is_array($datas))
{
 $datas = array(); 

Frank 發表在 痞客邦 留言(1) 人氣()

免費圖騰字型

免費圖騰字型  

網址 http://www.dafont.com/fish-in-the-bathroo.font 


Frank 發表在 痞客邦 留言(0) 人氣()

最近需要寫到身份證字號驗證,參考相關網站介紹的規則,所試著也以PHP來寫看看這個函式。
-- Frank 補充
-- 經驗證 ,檢查的身份證字號會判斷為 Fail ,故修正函式 .
-- 如以下紅字部份 ,謝謝
//**************
// 身份證檢查
//**************
function checkNick($id){
    //建立字母分數陣列
    $head = array('A'=>1,'I'=>39,'O'=>48,'B'=>10,'C'=>19,'D'=>28, 'E'=>37,'F'=>46,'G'=>55,
'H'=>64,'J'=>73,'K'=>82, 'L'=>2,'M'=>11,'N'=>20,'P'=>29,'Q'=>38,'R'=>47,
 'S'=>56,'T'=>65,'U'=>74,'V'=>83,'W'=>21,'X'=>3, 'Y'=>12,'Z'=>30);
    //建立加權基數陣列
    $multiply = array(8,7,6,5,4,3,2,1);
    //檢查身份字格式是否正確
    if (ereg("^[a-zA-Z][1-2][0-9]+$",$id) && strlen($id) == 10){
        //切開字串
        $len = strlen($id);
        for($i=0; $i<$len; $i++)
       {
            $stringArray[$i] = substr($id,$i,1);
        }        
        //取得字母分數
        $total = $head[array_shift($stringArray)]; 
      // 原本headPoint  by Frank

        //取得比對碼
        $point = array_pop($stringArray);
        //取得數字分數
        $len = count($stringArray); // 遺漏分號 
        for($j=0; $j<$len; $j++){
            $total += $stringArray[$j]*$multiply[$j];
        }
        //檢查比對碼
        if (($total%10 == 0 )?0:10-$total%10 != $point) {
            return false;
        } else {
            return true;
        } 
    }  else {
       return false;
    }
}
//***************
// 身份證產生
//***************
function getRandID(){
    //建立字母分數陣列
    $headPoint = array('A'=>1,'I'=>39,'O'=>48,'B'=>10,'C'=>19,'D'=>28,
                       'E'=>37,'F'=>46,'G'=>55,'H'=>64,'J'=>73,'K'=>82,
                       'L'=>2,'M'=>11,'N'=>20,'P'=>29,'Q'=>38,'R'=>47,
                       'S'=>56,'T'=>65,'U'=>74,'V'=>83,'W'=>21,'X'=>3,
                       'Y'=>12,'Z'=>30);
    //建立加權基數陣列
    $multiply = array(8,7,6,5,4,3,2,1);
    //取得隨機數字
    $number = mt_rand(1,2);
    for($i=0 ;$i<7 ;$i++){
        $number .= mt_rand(0,9);
    }
    //切開字串
    $len = strlen($number);
    for($i=0;$i<$len;$i++){
            $stringArray[$i] = substr($number,$i,1);
    } 
    //取得隨機字母分數
    $index = chr(mt_rand(65,90));
    $total = $headPoint[$index];
    //取得數字分數
    $len = count($stringArray);
    for($j=0; $j<$len; $j++){
        $total += $stringArray[$j]*$multiply[$j];
    }
    //取得檢查比對碼
    if ($total%10 == 0 ) {
        return $index . $number . 0;
    } else {
        return $index.$number.(10 - $total % 10);
    }   
}
原文轉貼自 : http://liaosankai.pixnet.net/blog/post/14514213 

Frank 發表在 痞客邦 留言(0) 人氣()

PHP的Session大家都很熟悉 ,但 Session 的陣列呢 ? 通常被用來儲存購物車的商品時 ,Session陣列就會派上用場了

轉貼這篇文章 ,與大家分享. 

<?php 
$_SESSION['s_user_name'] = array();

Frank 發表在 痞客邦 留言(0) 人氣()

While writing some PHP Training materials for Pale Purple, I thought I'd add an updated guide on PHP and database access. I've already done one on PEAR::DB, but PEAR::MDB2 is it's successor and has a slightly different API.... and as PEAR::DB is now deprecated, it's probably about time I rewrote it anyway.

What is PEAR::MDB2?

MDB2 is yet another database API for PHP. It's written in PHP, so can be used in a cross platform manner. Because it's written in PHP, it's not going to be as 'fast' as the PDO library, however it's portability may make up for that.

Compared to the native bundled legacy PHP libraries (mysqli_*, pgsql_*, sqlite_*, mysql_), changing which database you are using can be as simple as changing the connection parameters to your database. The PDO libraries offer the same advantage, however they require PHP5.

Getting started

It's recommended you install it using the Pear installer, like the following :

pear install MDB2
pear install MDB2_Driver_$db

Where $db would be one of e.g. mysql, pgsql, sqlite, ori8, mssql etc.

Frank 發表在 痞客邦 留言(0) 人氣()

當phpMyAdmin提示 找不到 PHP 內的 mbstring 編碼模組 時 ,該如何解決 ?

當使用的 Linux 發行版為 Fedora core 或其他 Red Hat base 則 ,使用 yum 指令及可輕鬆解決 !!

請參考以下範例:

[root@dns php.d]# yum -y install php-mbstring

Frank 發表在 痞客邦 留言(0) 人氣()

There are at least 2 ways you can set your PHP include_path.

  1. Edit your PHP configuration file. Inside that file is a directive section for "Paths and Directories." You can change that value to whatever you like or add to (or eliminate) the default like this:

    include_path = .:/usr/local/lib/php:./include

Frank 發表在 痞客邦 留言(0) 人氣()

 

★1. Allowed memory size of 8388608 bytes exhausted

pecl install imagick

と打ったら

[root@localhost ~]# pecl install imagick
downloading imagick-2.1.1.tgz ...
Starting to download imagick-2.1.1.tgz (74,980 bytes)
.................done: 74,980 bytes

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 536342 bytes) in /usr/share/pear/PEAR/Task/Replace.php on line 177

とかえってきました。

 こういうエラーってエラー内容をそのまま検索すると意外と出てくるものですが、案の定、ありました。

Frank 發表在 痞客邦 留言(0) 人氣()

«12 3