Check string is json type
is Json 判斷字串是否為Json格式
Test
[……]
可輕鬆取檔案名稱、副檔名、根目錄相對路徑、資料夾名
pathinfo($path, PATHINFO_EXTENSION); // 參數 (選用) PATHINFO_DIRNAME //完整路徑 PATHINFO_BASENAME //完整檔名 PATHINFO_EXTENSION //副檔名 PATHINFO_FILENAME //檔名
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); echo $path_parts['dirname'], "n"; echo $path_parts['basename'], "n"; echo $path_parts['extension'], "n"; echo $path_parts['filename'], "n"; // since PHP 5.2.0
/www/htdocs/inc lib.inc.php php lib.inc
[……]
Move to Windowssystem32 folder:
libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll
Move to Apache24bin folder
libssh2.dll
Uncomment extension=php_curl.dll
原文
http://php.net/manual/en/curl.installation.php
# PHP.ini取消註解
extension=php_curl.dll
[……]
何謂 x64 和 x86,可閱讀下方網址文章,本篇不多做解釋
x86和x64到底有什麼差異? http://www.ithome.com.tw/node/56880
若安裝x64版本,PHP & Apache 都需要選擇x64版本,反之亦然
解壓縮至 PHP 的存放目錄
本例解壓縮至 C:php-7.0.10-Win32-VC14-x64
PHP安裝目錄中尚無 PHP.ini
但於安裝目錄中有下列2個檔案
php.ini-development 為開發環境用參考設定檔
php.ini-production 為正式環境用參考設定檔
本例複製 php.ini-development 更名為 php.ini 置於於PHP安裝目錄中 文字編輯器開啟 php.ini
「C:/php-7.0.10-Win32-VC14-x64/」為PHP安裝目錄
所以是
「C:/php-7.0.10-Win32-VC14-x64/」
不是
「C:\php-7.0.10-Win32-VC14-x64\」
儲存 httpd.conf
開啟 Win10 的 「命令提示字元(系統管理員)」
// 測試設定檔是否正確
錯誤會跳錯誤訊息,正確會顯示syntax OK,接著安裝服務
// 安裝服務,反之解除安裝為 httpd.exe -k uninstall
在網站根目錄C:/AppServ/www下建立一個index.php檔案
運行 http://127.0.0.1
看到下列畫面,代表安裝成功
呼~打完收工!!
[……]
換資料庫真的好機掰,會有一堆未知問題,見招拆招,紀錄於下
LIMIT OFFSET
/* MySQL */
SELECT * FROM abc WHERE status=1 ORDER BY create_time DESC LIMIT 0 , 10
/* PostgreSQL */
SELECT * FROM abc WHERE status=1 ORDER BY create_time DESC LIMIT 10 OFFSET 0
# UPDATE 不能加 ORDER BY and LIMIT
/* MySQL */
UPDATE abc SET aaa=1 WHERE id<=100 ORDER BY status DESC LIMIT 10
/* PostgreSQL */
/* 若有需求要用子句解決 */
UPDATE abc main SET aaa=1
FROM
( SELECT id FROM page_builder WHERE id<=100 ORDER BY status DESC LIMIT 10 ) sub
WHERE main.id = sub.id
PHP
$re = pg_query($conn, "INSERT INTO foo (bar) values (123);");
$re = pg_query("SELECT lastval();");
$row = pg_fetch_row($re);
$insert_id = $row
[0];
[……]
因為要用到 PHP ldap_connect()
Fatal error: Uncaught Error: Call to undefined function ldap_connect()
設定方式網路上很多
主要是設定PHP.ini擴充套件,把前面的註解拿掉
extension=php_imap.dll
如果還不行
Copy PHP 目錄下的 libsasl.dll 到apache中的bin資料夾中
如果還不行
Copy PHP 目錄下的 libeay32.dll 及 ssleay32.dll 到 C:WindowsSystem32 中
基本上該設定的都設定了,但我還是不行,
這是一個怪問題,我用Nginx + PHP7
可以順利的call ldap_connect()
但用 apache2.4 就會跳 Fatal error
怪的是我用相同的PHP7,搞死人,
最後找到原因,以下解決我的問題
修改 PHP.ini
extension_dir = "ext"
改為
extension_dir = "C:/php-7.0.9-Win32-VC14-x64/ext"
也不知道為什麼,用Apache2.4預設的PHP.ini會有這樣的問題,用NginX反而不會
怪怪怪!!!
http://stackoverflow.com/questions/17204437/fatal-error-call-to-undefined-function-mb-detect-encoding
[……]
This worked for me
<?php
$json_string = file_get_contents('json_string.txt');
$json_string = preg_replace( '/[^[:print:]]/', '',$json_string);
$obj = json_decode( $json_string , true );
print_r($obj);
exit;
?>
這問題有點見鬼,直接用字串測試,一樣的josn字串,正常,就是放進檔案用json_decode()會拋回個NULL,網路上看了很多方法都沒效,搞了我好久,以下跟大家分享,下方有範例檔
<?php
$json_string = '{"aaa":"bbb","0":{"bbb":"bbb","ccc":"ccc"}}';
$obj = json_decode( $json_string , true );
var_dump($obj);
?>
array(2) { ["aaa"]=> string(3) "bbb" [0]=> array(2) { ["bbb"]=> string(3) "bbb" ["ccc"]=> string(3) "ccc" } }
<?php
$json_string = file_get_contents('json_string.txt');
$obj = json_decode( $json_string , true );
var_dump($obj);
exit;
?>
NULL
我覺得應該是檔案中有些隱藏字元導致,也許是跟編碼有關的字元,所以由檔案讀進字串後清除這些隱藏字元,結果成功了~喔耶
$json_string = preg_replace( '/[^[:print:]]/', '',$json_string);
像這樣子
<?php
$json_string = file_get_contents('json_string.txt');
$json_string = preg_replace( '/[^[:print:]]/', '',$json_string);
$obj = json_decode( $json_string , true );
print_r($obj);
exit;
?>
範例檔案下載
download
[……]
這絕對不是個好方法,我個人是不推薦使用,雖然這方法一勞永逸,但在開發PHP時,你將會知道錯誤訊息有多麼美好,Debug時才不會像無頭蒼蠅般,除非程式已經在一個很穩定的階段,不然非必要,不要關閉全部錯誤訊息,還是留給程式可以去設定是否顯示錯誤訊息的彈性。
以下介紹幾種PHP停用錯誤訊息的方法:
在PHP文件中加入,停用PHP錯誤訊息
如果還是出現錯誤訊息,請試下列方法
在.htaccess檔案中加入下面這一行 ( Apache專用 )
如果還是出現錯誤訊息,請試下列方法
在 PHP.ini 中找到 display_errors 這一行,沒這一行則添加,將值改為off。
如果短期間沒打算繼續升級的話,還是可以在PHP5.5 使用 mysqli_connect() ,但停用所有錯誤訊息好像又太極端,下面這方法可以設定錯誤訊息級別,隱藏某些特定的錯誤級別,選擇排除顯示某指定錯誤級別,排除的錯誤級別將不會顯示在錯誤訊息上,排除E_DEPRECATED,mysql_connect()就可以繼續撐拉。
以下例子顯示所有錯誤,除了下列這幾個錯誤級別:
E_DEPRECATED棄用E_NOTICE注意E_WARNING警告E_STRICT嚴格
這是最正規的方式拉,也是最推薦的,就是乖乖升級吧,雖然升級的過程中會有一段陣痛,有點痛,以下提供很簡單的範例。
mysqli_connect() 範例如下
mysqli_connect() 建表SQL如下
[……]