2018年8月17日 星期五

【PHP】extract

extract 這很好用可以直接把陣列變成變數

$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";

但不要用於GET和POST

【PHP】htmlspecialchars && htmlentities && urlencode

htmlspecialchars 與 htmlentities 感覺效果一樣都是把HTML的標籤變成代碼

但 htmlspecialchars 只會轉換特定的符號,htmlentities 轉換的比較多

所以一般要用 htmlspecialchars 速度較快

urlencode 主要是編碼 URL

【PHP】serialize && json

有天看到資料別人資料出現:a:2:{i:0;s:1:"1";i:1;s:1:"2";}

這是三小,

後來查一下他是用 serialize 將 array 編碼後的字串,

我一般都是用 json_encode 將陣列編碼在存入資料庫,

查了一下 serialize 好處是可以把整個class轉成字串,

但一般沒特殊需求還是用 JSON 格式,不但可讀也可跨平台。


2018年7月2日 星期一

【Google】AMP 行動網站加速計劃

Accelerated Mobile Pages (AMP) 是一種根據開放原始碼規格所設計的網頁。
透過 AMP 製作技術,您能夠大大縮短靜態內容的渲染時間從而有效提升網頁效能。
缺點是限制很多

官方網頁
AMP測試

2018年6月29日 星期五

【PHP】判斷連結圖片是否存在,如果不存在將他移除

// 建立白名單
require_once('../class/htmlpurifier/HTMLPurifier.auto.php');
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML', 'Allowed', 
'
,area[accesskey|alt, coords|href|name|shape|tabindex|target]
,img[alt|border|height|ismap|src|usemap|width]
,b,blockquote[cite],br,dd,dl,dt,em,h1,h2,h3,h4,h5,h6
,hr,i,li[value],map,ol[start|type]
,nav[accesskey|contenteditable|contextmenu|data-*|draggable|dropzone|hidden|spellcheck|tabindex|translate]
,ol[start|type],p,pre,rp,rt,ruby,s,small,source,strike,strong,style,sub,sup,
,table[border|cols|summary|cellpadding|cellspacing|align]
,tbody[valign],td[bordercolor|colspan|rowspan],tfoot[valign]
,th[colspan|rowspan|scope],thead[valign],tr[colspan|rowspan]
,tt,u,ul,video[autoplay|controls|height|loop|muted|poster|preload|src|width]
,div[style|class|id]
,span[style|class|id]
'
);

$purifier = new HTMLPurifier($config);
$rs['description'] = $purifier->purify($rs['description']);


// 判斷連結圖片是否存在,如果不存在將他移除
preg_match_all("//", $rs['description'], $img_arr);

if ($img_arr)
{

 foreach($img_arr[1] as $key=>$img)
 {
  $size_arr = getimagesize($img);

  if (!$size_arr)
  {
   $img_arr[0][$key];
   $rs['description'] = str_replace($img_arr[0][$key], '', $rs['description']);
  }
 }
}

2018年6月28日 星期四

【PHP】addslashes & stripslashes 符號前加斜線

常常忘了這兩個函數 addslashes、stripslashes

$str = "Is your name O'reilly?";

// 輸出:Is your name O\'reilly?
$str = addslashes($str);
echo $str;

echo stripslashes($str);

【PHP】簡易mail發送

// 寄信 email可用逗點分隔一次寄給多人
function send_mail($subject, $content, $email, $cc=array()){
 $charset = 'utf-8';
 $sitename = PROJECT_NAME;
 $ADM_EMAIL = ADM_EMAIL;
 $encoded_subject = mail_header_encode($subject,$charset);
 $sitename2 = mail_header_encode($sitename,$charset);  
 
 $headers = "From: ".$sitename2 ."<".$ADM_EMAIL.">". "\r\n";
 $headers .= "Content-Type: text/html; charset=$charset; format=flowed". "\r\n";
 $headers .= "MIME-Version: 1.0". "\r\n";
 $headers .= "Content-Transfer-Encoding: 8bit". "\r\n";
 $headers .= "X-Mailer: PHP". "\r\n";
 
 if ($cc){
  foreach($cc as $mail){
   $headers .= "Cc: $mail" . "\r\n";
  }
 }
 
 $r = mail($email, $encoded_subject, $content, $headers);
 return $r;
}

// 寄信用的編碼
function mail_header_encode($str,$charsets){
 return "=?$charsets?B?".base64_encode($str)."?=";
}

【jquery】插入內容方式

久沒用就會忘記,快點記下來
after()
before()
insertAfter()
insertBefore()
prepend()
prependTo()
append()
appendto()

2018年6月27日 星期三

【javascript】framework

javascript framework 流行的有 vue、react、angular
我覺得用jquery就很好用了

2018年6月26日 星期二

【Redis】什麼是 Redis?

Redis 是一種快速、開放原始碼的記憶體內鍵值資料結構存放區。
Redis 隨附一組多功能的記憶體內資料結構,讓您能夠輕鬆地建立各種自訂應用程式

與資料存放在磁碟或 SSD 的大多數資料庫管理系統不同,
所有 Redis 資料都位於自己的伺服器主記憶體。
因為不需要存取磁碟,像 Redis 這樣的記憶體內資料庫可避免尋找時間延遲,
還可以透過使用較少 CPU 指示的較簡單演算法存取資料。
通常操作都可在一毫秒內完成。

大流量的處理適合使用

https://aws.amazon.com/tw/elasticache/what-is-redis/

https://www.ithome.com.tw/news/119974