網頁

2014年3月26日 星期三

PHP開發筆記-中英文字取子字串長度問題

之前在Wordpress開發筆記-資料內容有html special code又要呈現縮減字數問題有記錄到如何解決字數過長,將之截成同樣長字串的問題,不過那時主要的大問題在

  1. 包含一堆的html tag
  2. 中英交雜

不過說實在,那時算是隨便解解,也沒什麼好方法,這次的問題單純多,只是中英文交雜,在畫面上長過一定長度要截成相同的長度,PHP的API其實提供不錯的function了,那就是mb_strimwidth,他會將中文字(multibyte)辨識成寬度2,英文或符號為寬度1,這樣就可以解決直接辨識中英文字數,在畫面上截出的長度不同的問題。用法如下:
echo mb_strimwidth("abc 笨笨的 123", 0, 13, '...', 'UTF-8');

output:
abc 笨笨的...

不過,若是真的要截字數,就用mb_substr吧~

參考網址:
function: mb-strimwidth
Ref: mbstring
PHP 切中文字串怎麼切

2014年3月21日 星期五

PHP開發筆記-php中移除array元素要記得re-index

有時有些bug總來自於不了解使用的API或語言特性,這邊做個紀錄。

以下程式碼來自PHP Manual Language Reference Types > Arrays
<?php
// Create a simple array.
$array = array(1, 2, 3, 4, 5);
print_r($array);

// Now delete every item, but leave the array itself intact:
foreach ($array as $i => $value) {
    unset($array[$i]);
}
print_r($array);

// Append an item (note that the new key is 5, instead of 0).
$array[] = 6;
print_r($array);

// Re-index:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>

結果如下:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Array
(
)
Array
(
    [5] => 6
)
Array
(
    [0] => 6
    [1] => 7
)

光查這種bug,就花掉一個小時,真蠢

參考網址:
PHP Manual Language Reference Types > Arrays

2014年3月16日 星期日

jQuery開發筆記-jQuery plugin - Select2 如何秀出clear標示

使用好用的WordPress plugin - Meta boxes時,看到他裡頭用了一個很不錯的jQuery Plugin - Select2。他可以讓select或input都做成像是dropdown list或div中有多重的選單,可以動態search,有興趣的人可以自行去jQuery plugin - Select2看。

最近太忙,這篇依然是記錄用,主要需求是,當使用Meta boxes時,又要自己加入dropdown list,總希望能長的一樣,但偏偏就是少個"x"(就是clear或close)的圖示,後來查了下資料,發現有clear的選項,所以加入底下的code

$('#test').select({allowClear:true});

想說這樣就ok了,但發現並沒有,要再多個placeholder這個參數才會如自己所想要

$('#test').select({placeholder:'',allowClear:true});

使用別人寫好的library很方便,不過要依著別人的想法才行。

參考網址:
jQuery plugin - Select2

WordPress開發筆記-取得theme的絕對路徑

這邊記錄一下,要取得WordPress中目前正在使用的theme的實際目錄的路徑,要使用get_template_directory,然後再加上自己要用的file的路徑,例如:要取的theme下的inc的demo.php要用

echo get_template_directory().'/inc/demo.php';

參考網址:
Function Reference/get template directory

2014年3月6日 星期四

PHP開發筆記-刪除cookie

我個人很少使用Cookie,也許是我對他的安全性有疑慮,不過不管如何,還是有它方便的時候,不過在在PHP上使用時(也許其他語言也是,但我太少用),用PHP所述的unset方式,卻發現使用後,依舊存在在browser中,令我覺得奇怪,Google了一下,發現這問題還真是很多人都遇到,依w3schools上所述,是用設定過期的方式,如下例(截自PHP Cookies-w3schools):

setcookie("user", "", time()-3600);

這樣就可以了,是有些網頁講要在之前用unset,但我覺得後面又set,完全多餘的。

參考網址:
Remove a cookie
PHP Cookies-w3schools
PHP: Delete or Expire a Browser Cookie

PHP開發筆記-隨機做出亂數字串

需求:做出一個10個字元的亂數字串,不能重覆

要完成這需求我能想到的只有MD5或sha1這類的東西,不過MD5產生出來的太長,而且試過的結果,我加入time()或datetime,產生出來的結果都相同,找半天才發現,原來還有個unique的函數可用,大概用法如下

$temp = md5(uniqid(rand(), true));
substr( $temp,-10); //我個人是取最後10個字

這樣就可以達到這要求了。uniqid的第二個參數不見得要有,不過uniqid提到在cywin底下是有需要加入的。

參考網址:
PHP: How to generate a random, unique, alphanumeric string?
uniqid