PHP 讀取檔案最後修改時間(防Cache)

Apache、Nginx 會去設定檔案過期時間, 然後使用者的瀏覽器就會 Cache 起來, 下次訪問就不用再要一次檔案, 但是如果檔案更新了, 瀏覽器知道檔案需要來重新抓取呢? (如何防止讀取到 Cache 的檔案?)

一個最簡單的方式, 就是更改 URL, 如下述:

  • http://example.com/demo.jpg → http://example.com/demo.jpg?v=1
  • 註1: Apache、Nginx、CDN 都可以用此方法來解決.
  • 註2: 某些 CDN 廠商不吃 "?" 後面的參數, 就無法使用此種解法.

閱讀全文〈PHP 讀取檔案最後修改時間(防Cache)〉

PHP mb_convert_encoding() 指定轉換編碼順序

PHP 轉換編碼會使用 iconv() 或 mb_convert_encoding(), 現在比較常用的是 mb_convert_encoding().

一般使用上, 如果有多種編碼, 可以用下述寫法:

<?php $string = mb_convert_encoding($sring, "UTF-8", "cp950,gb2312,gbk"); ?>

閱讀全文〈PHP mb_convert_encoding() 指定轉換編碼順序〉

PHP Heighlight 語法 與 phps 啓用 (Apache2)

PHP 要秀程式碼, 除了現成的 JavaScript Plugin 等外掛外, 可以使用下述幾種方法:

  • PHP Highlight 的 Function - highlight_string()
  • 或 PHP Highlight 的 Function - highlight_file() 搭配此篇(How do I enable .php file to be color highlight) - 使用 .htaccess + highlight_source.php
    .htaccess如下述:

    Action php-source /var/highlight_source.php
    AddHandler php-source .phps

    highlight_source.php 如下述:
    <?php highlight_file($_SERVER{"DOCUMENT_ROOT"} . $_SERVER{"PATH_INFO"}); ?>

  • 另一個更簡單的方法, 啟用 phps. (*.phps 會自動 Heiglight code, 但是要注意避免把 Source code 不小心公開出去)

閱讀全文〈PHP Heighlight 語法 與 phps 啓用 (Apache2)〉

PHP dba 基本操作 程式範例

PHP 的 DBA(Database (dbm-style) Abstraction Layer) 可以接 Oracle Berkeley DB.

這邊有相容的 DB Layer 列表: PHP: Requirements - Manual

註: 此篇文章的範例使用 db4, 確定 PHP 5.3.3 以上可以正常執行, 不能執行的話, 可以換成 dbm 先測試看看. 🙂

閱讀全文〈PHP dba 基本操作 程式範例〉

用 PHP 抓取下星期二的 Timestamp - strtotime()

日期的轉換只要把日期轉成 Timestamp, 就可以使用 date() 轉成自己想要的格式.

strtotime() 很常用, 通常都是把 "2012-02-12 22:11:10" 丟進去, 轉成 Timestamp.

最近想要抓某個日期, 或者是上週、下週、上個星期一、下個星期二.. 等等的時間, 才發現 strtotime() 強的很過份. XD

官方文件詳見下述:

閱讀全文〈用 PHP 抓取下星期二的 Timestamp - strtotime()〉