PHP 陣列轉字串寫入資料庫 Array to string

下方陣列轉字串,字串再轉回陣列,下方提供範例下載

<?php
$arr = array(
'aa'=>'aa',
'bb'=>'bb',
'cc'=>'cc',
'arr'=>array(1,2,3)
);
$str = serialize($arr);
echo $str;
echo '<br/>===<br/>';
$rearr = unserialize($str);
var_dump($rearr);

output

a:4:{s:2:"aa";s:2:"aa";s:2:"bb";s:2:"bb";s:2:"cc";s:2:"cc";s:3:"arr";a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}}
===
array(4) { ["aa"]=> string(2) "aa" ["bb"]=> string(2) "bb" ["cc"]=> string(2) "cc" ["arr"]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } }

範例:
download[……]

閱讀更多

[官方解決方法] Win10 一直跳「Avira antivirus 需要更新」問題

也不知道為什麼更新win10後,小紅傘一職跳出下面訊息

Avira antivirus 需要更新,avira antivirus 偵測到 windows 10 更新…

雖然似乎不影響功能,但每次開機都跳,覺得煩
網路上有些解決方法,但非官方解決方案,檔案裝起來有點不安,
怕開了道後門 ( 剛好發生第一銀行提款機被駭盜領事件 )

所以下面解決方法出自Avira官方文章
https://www.avira.com/zh-tw/support-for-home-knowledgebase-detail/kbid/1800

一、開啟Avira

二、停用Avira檔案保護

關閉「保護處理序,避免意外中止」項目。
關閉保護檔案和登錄項目,避免操作項目。

三、下載及安裝 Avira 註冊檔程式
下載官方檔案,下面載點是直接官網複製的連結
( 不放心的話可以連結官網該篇文章下載 )

載點:Win10UpdateMessage.zip解壓縮密碼:avira

檔案上按右鍵,以系統管理員身分執行

四、用Avira檔案保護
重新開啟剛才關閉的檔案保護功能

五、重新開機~OK

參考文章:

官方 Recurring Avira update message after each restart
https://www.avira.com/zh-tw/support-for-home-knowledgebase-detail/kbid/1800

小紅傘開機都會出現『avira antivirus 偵測到 windows 10 更新』http://www.mobile01.com/topicdetail.php?f=508&t=4650565

[……]

閱讀更多

PHP 國曆轉西元日期

<?php
// 國曆西元日期
//echo ROC_years_to_date('70/8/8');
//echo ROC_years_to_date('71/8/8','Y/m/d');
function ROC_years_to_date($date,$format='Y-m-d')
{
$arr = array();
preg_match_all("/[0-9]+/", $date , $arr);
        $y = intval($arr[0][0])+1911;
$m = intval($arr[0][1]);
$d = intval($arr[0][2]);
return date($format,strtotime($y.'/'.$m.'/'.$d));
}
?>

[……]

閱讀更多

PHP 時間運算 取2日期間共幾年 get years between two dates

php get years between two dates

取2日期間共幾年

/*
 get years between two dates
 https://vector.cool 

 date $date ex:2006/3/8
 date $date2 ex:2017/5/14
 return int
*/
function get_years_between_two_dates($date,$date2=NULL){
	$time = (empty($date2))?time():strtotime($date2);
	$time = $time - strtotime($date);
	return intval($time / (365*24*60*60));
}

用法:

這邊有個要注意的地方,使用這方法須先設定時區

date_default_timezone_set()
date_default_timezone_set("Asia/Taipei");
echo get_years_between_two_dates('2007/7/28','2017/12/23');

 [……]

閱讀更多

Javascript 常用取網址 window.location

// ‘http://127.0.0.1/osac.com.tw/zh-tw/tag_page.php?aaa=1&bbb=2’

// 當前頁面的 URL
window.location.href
// output : ‘http://127.0.0.1/osac.com.tw/zh-tw/tag_page.php?aaa=1&bbb=2’

// 域名
window.location.hostname;
// output : ‘127.0.0.1’

//當前頁的路徑和文件名
window.location.pathname;            
// output : ‘/osac.com.tw/zh-tw/tag_page.php’

//所使用的網絡協議(http://或https://)
console.log(‘location.protocol=’+window.location.protocol);
// output : ‘http:’

//取URL參數
urlParam = decodeURIComponent(location.search)
// output : ‘?aaa=1&bbb=2′[……]

閱讀更多

jQuery 選擇器,替代萬用字元 模糊查找匹配元素

jQuery 選擇器中沒有所謂的「萬用字元(*)」,可以透過依些方式接近模糊查找元素或值的目的

歸納出幾種用法

下表屬性名稱不一定為Class,可以替換成需要的屬性
單引號可有可無

[class]比對元素包含指定屬性[id][class][href] 比對元素包含其中一個屬性[class=’test’] 完全比對元素屬性與值 (區分大小寫)[class^=’test’]比對元素屬性開頭為指定的值[class$=’test’] 比對元素屬性結尾為指定的值 [class*=’test’] 模糊比對屬性包含指定的值[class!=’test’]元素屬性不包含指定的值

使用範例:

Demo Download 範例下載:

[……]

閱讀更多

PHP imagettftext(): Could not find/open font 解決方法

新的主機PHP版本換成5.5.9版本
原本可用的驗証碼圖驗程式跑出 E_WARNING 的 error reporting如下

imagettftext(): Could not find/open font

無法開啟字型檔,導致圖片無法正常顯示,解法如下:
在imagettftext()前加入putenv(‘GDFONTPATH=’ . realpath(‘.’));

putenv(‘GDFONTPATH=’ . realpath(‘.’));
imagettftext( … );


搞定!!

參考網址
http://stackoverflow.com/questions/6089393/imagettftext-cannot-open-font-file

[……]

閱讀更多

PHP Deprecated: Function set_magic_quotes_runtime() is deprecated 解決方法

set_magic_quotes_runtime()於 PHP5.3後棄用

在 PHP.net 官方文件中有提到,set_magic_quotes_runtime()於PHP5.3已經棄用,雖然不會造成Fatal error而中斷程式,但會發送E_DEPRECATED的過時警告

Deprecated: Function set_magic_quotes_runtime() is deprecated

替代方案:

set_magic_quotes_runtime(0);

意思同上,以下列方法替代棄用的set_magic_quotes_runtime()

ini_set("magic_quotes_runtime", 0);
這一段主要是修改 php.ini 中 magic_quotes_runtime 參數
用以將SQL語句自動加上跳脫字元反斜線,以防止SQL注入隱碼攻擊(SQL injection)

PHP 5.4起,使用此函數會拋出Fatal error,終止程式運行

Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime()

相容性:

有時在寫PHP並不一定確定針對某一版本去寫,另外目標主機環境百百款,PHP版本也很不固定,每次要針對版本再改就會很麻煩,我覺得相容性就變得很重要,解決方法如下:

把舊版本程式有使用到

set_magic_quotes_runtime(0);

都改為就可以了

ini_set("magic_quotes_runtime", 0);
另外在前面加上@,加上@的意思就是強制不拋錯誤訊息,如下
@set_magic_quotes_runtime(0);
不過我覺得還是不要使用@強制不拋錯誤訊息的作法,
因為有很多時候Debug還是需要錯誤訊息,
當然還有其他方法,其他方法可參考官網文件,

參考資料:

[……]

閱讀更多

CSS 載入字型

以前一直有個觀念是網頁只能用系統字型,

今天看了一下國外網站,為什麼字型這麼豐富,
我就偷看了一下CSS檔,原來可以載入字型,
打破我舊有的觀念,在版型設計上相信可以更彈性的運用,
語法如下:

@font-face {
    font-family: myFirstFont;
    src: url(sansation_bold.woff);
    font-weight: bold;
}

其他運用

@font-face {
font-family: Lato;
src: local(“Lato Regular”), local(“Lato-Regular”), url(https://fonts.gstatic.com/s/lato/v11/nQhiC-wSiJx0pvEuJl8d8A.eot) format(“embedded-opentype”), url(https://fonts.gstatic.com/s/lato/v11/9k-RPmcnxYEPm8CNFsH2gg.woff) format(“woff”);
font-weight: 400;
font-style: normal;

}

相關網址
https://vector.cool/css-load-font/
http://www.w3schools.com/cssref/css3_pr_font-face_rule.asp

不過,
我想中文字型如果非必要,還是別了吧,因為中文字型檔通常很大,
雖然沒實際測過,但我相信一定會影響載入速度

[……]

閱讀更多