PHP 開發的歷史演進成長影片 - 2016

PHP 到現在20年了,有個專案將 PHP 從 1995 ~ 2014 年的開發歷程(使用 Git Log 的紀錄),用 gource + ffpmeg 直接轉成可以看的影片,非常有趣。

閱讀全文〈PHP 開發的歷史演進成長影片 - 2016〉

PHP 截出 圓形(橢圓形)的圖片

PHP 要截圖可以參考此篇:PHP 要截圖片的某個區塊(截圖)

上述截圖的圖片是方形的,想要截出圓形的圖片,要怎麼做呢?

註:此篇文章的需要透明背景,所以還是以 png 為主。

閱讀全文〈PHP 截出 圓形(橢圓形)的圖片〉

PHP 使用 SHA256、SHA512 等 演算法的寫法

PHP 有 md5()sha1() ... 等等 function,不過現在建議使用 SHA224 以上(註),在 PHP 要怎麼寫呢?

註:下述摘錄自此篇:Mobilefish.com - MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator

  • MD5 is considered cryptographically broken and is unsuitable for further use.
  • The SHA1 algorithm might not be secure enough for ongoing use. It is recommended not to use SHA1.
  • SHA224: SHA224 produces a 224-bit (28-byte) hash value, typically rendered as a hexadecimal number, 56 digits long.
  • SHA256: SHA256 produces a 256-bit (32-byte) hash value, typically rendered as a hexadecimal number, 64 digits long.
  • SHA384: SHA384 produces a 384-bit (48-byte) hash value, typically rendered as a hexadecimal number, 96 digits long.
  • SHA512: SHA512 produces a 512-bit (64-byte) hash value, typically rendered as a hexadecimal number, 128 digits long.
  • RIPEMD160: RIPEMD160 produces a 160-bit (20-byte) hash value, typically rendered as a hexadecimal number, 40 digits long.

閱讀全文〈PHP 使用 SHA256、SHA512 等 演算法的寫法〉

PHP 送 301 / 302 轉址的 Header

以往 301 我都是設在 Apache 裡面,如下:

RewriteRule ^news$  http://example.com/news/ [R=301,NE,L]

想要在 PHP 送 301 / 302 Redirect 的 Header 要如何寫?

HTTP 定義 301 / 302 的 Header 意義:

  • 301: 永久轉址 (Permanently Moved)
  • 302: 臨時轉址 (Temporarily Moved)

閱讀全文〈PHP 送 301 / 302 轉址的 Header〉

PHP 取得 Git 的 branch name

想要取得專案中目前在 Master 或 Branch,可以判斷要去抓不同的 config,可以使用此 function。

<?php
function get_git_branch_name()
{
    $git_head = './.git/HEAD';
    return (file_exists($git_head)) ? implode('/', array_slice(explode('/', file_get_contents($git_head)), 2)) : '';
}
?>

註:$git_head 的路徑請自行修改設定。

使用方式:

<?php print_r(get_git_branch_name()); // master ?>

感謝 Fwolf 的建議,用 system 的指令執行:git branch | grep '*' | awk '{print $2}' ,可以解決 submodule 抓不到 branch 的問題

PHP Markdown Parser 函式庫

將 Markdown 語法 轉譯成 HTML 的 PHP Library

詳細可見:

用法範例

<?php
include('Parsedown.php');

$Parsedown = new Parsedown();

echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>
?>

教學文件、影片