2016年5月6日 星期五

[php]濾掉詭異的字元

preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $string);

2015年10月1日 星期四

[php]處理透明背景圖檔

就在要處理圖片之前加入這段就好了
imagesavealpha($source_img, true);
$color = imagecolorallocatealpha($source_img, 0, 0, 0, 127);
imagefill($source_img, 0, 0, $color);

ex:
$imgInfo = getimagesize($source_img);
$width = $imgInfo[0];
$height = $imgInfo[1];

$image_new = imagecreatetruecolor(800, ($height * (800/$width)));

imagesavealpha($image_new , true);
$color = imagecolorallocatealpha($image_new , 0, 0, 0, 127);
imagefill($image_new , 0, 0, $color);

imagecopyresampled($image_new, $source_img, 0, 0, 0, 0, 800, ($height * (800/$width)), $width, $height);

return $image_new;

2015年9月21日 星期一

Facebook API v2.4 get email 與 reloadapi

第一種:
FB.api('me/?fields=email,name,id',

第二種:
FB.api('/me', function (user) {.....},
{ fields: 'id,first_name,last_name,email,gender,name'});

API reload
FB.XFBML.parse()

2015年7月29日 星期三

[AWS][RDS] time_zone 時區設定

自架的MySQL因為有ADMIN權限
設定上沒有什麼太大的問題 

但自從用AWS的RDS後
它竟然沒有辦法設定時區
所以就用偷吃步的方向,做一個PROCEDURE

然後再每次SQL 交易前先CALL一下這個PROCEDURE


DEFINER=`root`@`%`

如果出現沒SUPER權限,記得把上面語法拿掉

DELIMITER //
CREATE DEFINER=`root`@`%` PROCEDURE `store_time_zone`()
IF NOT (POSITION('rdsadmin@' IN CURRENT_USER()) = 1) THEN
SET SESSION time_zone = '+8:00';
END IF//
DELIMITER ;

2015年6月25日 星期四

[C#][php] POST json data TO a PHP page

原本只是很簡單的,跨頁傳值從C#到php
沒想到搞了半天,php那端一直接收不到json值


string json = "{\"user\":\"test\"," +
                "\"n\":\"2\"}";
var webAddr = "http://";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/json";
httpWebRequest.ContentLength = json.Length;

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
     streamWriter.Write(json);
     streamWriter.Close();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
     var result = streamReader.ReadToEnd();
     //return result;

}


找了很久,原來是php那端看不懂,C#這邊傳過去的json格式
在php接收那端需加上

// Error handling is left as an exercise
$input = json_decode(file_get_contents('php://input'), true);

這樣就行了,然後這是php端的改法
C#端也有另一種寫法


string postData = "user=" + HttpUtility.UrlEncode("test") +
                  "&n=" + HttpUtility.UrlEncode("2");

byte[] byteArray = Encoding.ASCII.GetBytes(postData);

string postData = "json=" +
                HttpUtility.UrlEncode(serializer.Serialize(p));

php端:

$json_array = json_decode($_POST['json']);

2015年5月25日 星期一

[mysql] RDS 中文 全文檢索

我使用的版本是5.6.XX

一開始也是一樣,先建FULLTEXT

ALTER TABLE 表名 ADD FULLTEXT(欄位1, 欄位2...)

然後就可以開始搜尋了…

SELECT *
FROM TABLE
WHERE MATCH (欄位1) AGAINST ('旅行*' IN BOOLEAN MODE)

word* 列出所有以word開頭的字,這個星號不能改變位置只能放最後

因為無法判定文字斷句,只好用 * 來補強…
但對中文字來說,還是非常不足…

如果大大有其他方法,請不要吝嗇告知一下,非常感謝QQ

2015年5月21日 星期四

[mysql] utf9mb4 4byte utf8

中文字其實是很麻煩的

今天就遇到了一個,越南的一個城市

北"𣴓"省,中間這字就是用utf8 4byte存的
導至一般的utf8 會有問題

一開始以為把mysql的字符集改成 utf8mb4

結果手動新增還是錯誤

最後查了一下,改完字符集後

還要再執行

SET NAMES utf8mb4;