文章

php 校正不必要或是錯誤的 html 格式 tidy

我們在做編輯後台的時候會開放讓使用者貼上自己想要的格式,但是很不幸的,大部分的情況下使用者都會從很奇怪的編輯軟體貼過來。 這時候如果遇到瀏覽器無法解析的時候就會變成原始碼被印在葉面上。或是整個大跑版。
php 其實就有 tidy 模組可以使用,他可以幫你改寫成正確的html format
通常的環境沒有預先安裝 所以我們先 install
sudo yum -y install php-tidy sudo service httpd restart
接著使用也是很簡單
$config["show-body-only"]=true; $html = tidy_repair_string($str, $config);

tidy_repair_string 就可以幫我們校正了,需要注意的是 show-body-only 這如果沒有加 他會回傳整組的 html 包含 head 那些
其他我也不知道要幹嘛的用法

CodeIgniter 4 Libraries 引入使用方式

CodeIgniter 4 這個版本開始全面更新架購,所以原先的 libraries 引入使用的方式也要調整。
我們先由 Conntroller 說起。
<?php  namespace App\Controllers; use App\Libraries\Mylibraries;
class Myfun extends BaseController{     function demo1(){ $lib = new Mylibraries();       $data = $lib->function1();
}
} ?>

接著就是 library 本身
<?php namespace App\Libraries; class Mylibraries{     function function1(){     return 'hello lib';
} } ?>
我們可以看一下紅字的部份 重點都是在宣告 namespace 的路徑,路徑對了就可以。 另外就是 class 的引用這次開始要用 new 才能開始使用。

解決 mongodb 無法啟動的問題

某天起床後 mongo 忽然活不回來了
查了一下錯誤訊息的 log:

Docs: https://docs.mongodb.org/manual
  Process: 120107 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)
  Process: 120104 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120101 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120099 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

 1月 15 04:01:26 foso-test systemd[1]: Starting MongoDB Database Server...
 1月 15 04:01:29 foso-test mongod[120107]: about to fork child process, waiting until server is ready for connections.
 1月 15 04:01:29 foso-test mongod[120107]: forked process: 120112
 1月 15 04:01:29 foso-test systemd[1]: mongod.service: control process exited, code=exited status=1
 1月 15 04:01:29 foso-test systemd[1]: Failed to start MongoDB Database Server.



看起來應該是權限的問題: 發現很多人都遇到相同的狀況,主要有兩個資料夾勢必要擁有 mongod 這個權限擁有才可以。 所以大部分的解決說明都是這樣作:
chown -R mongod:mongod …

php 二維陣列進行假的 group by 資料篩選

有些時候我們在資料庫存取後會拿到一些很髒的資料,要作資料的篩選整理。
這次我們要做的動作就是,兩個相同格式的二為陣列要去過濾出重複的某個 key 值不要讓他一直出現:
例如:



$arr1[] = array( 'order_id'=>'00001', 'name'=>"james", ); $arr1[] = array( 'order_id'=>'00002', 'name'=>"james 2", ); $arr1[] = array( 'order_id'=>'00003', 'name'=>"james 3", ); $arr2[] = array( 'order_id'=>'00002', 'name'=>"james 2", ); $arr2[] = array( 'order_id'=>'00003', 'name'=>"james 3", ); $arr2[] = array( 'order_id'=>'00004', 'name'=>"james 4", ); 我們分別拿到 arr1 和 arr2 的陣列資料,如果我們直接把他們兩個合併,那麼 00002 00003 就會被重複兩次。
這時候我們就可以簡單的呼叫一下這個 function 來作過濾
// 先合起來兩個陣列 $result = array_merge($arr1, $arr2); // 進行過濾 $result_2 = group_by($result,'order_id'); 這樣我們拿到的 result_2 就會過濾掉重複的 order_id 資料


這個 function 我會放在
https://github.com/gwolf0719/lib_function…

[JavaScript] 將 CSV 檔案轉換成 JSON 資料

我們在拿到客戶提供的資料的時候常常會拿到 excel 檔案(這算幸福的)
至少我們可以簡單的利用一些軟體轉成 csv丟進資料庫裡處理。如果搭配個後端 API 基本上資料都不會是太大的問題可以做成 JSON 供 JavaScript 使用,但是如果在沒有後端或是資料庫的環境中呢?


首先我們先把 csv 檔案放到 server上 利用 $.get() 取得內容,接著將內容String 丟進我們待會會用到的 csvJSON 外掛 function 中。就會取得 JSON
但是這個時候的 JSON 還是 String 的形態所以還無法被解析,我們再加個 JSON.parse() 就可以拿到整個 JSON 物件摟!


function 來源:
https://gist.github.com/iwek/7154578

fullCalender 語系設定

圖片
fullCalender 是一個非常好用的行事曆外掛。
官網在這
https://fullcalendar.io

不過他預設的日期格式是使用英文(月份這樣超麻煩,我是文盲)

好險其實他有提供語言包
locale-all.js
這個檔案在官方下載的檔案
然後掛上


<script src='fullcalendar/fullcalendar.js'></script>
<script src='fullcalendar/locale-all.js'></script>
<script>

  $(function() {

    $('#calendar').fullCalendar({
      locale: 'zh-tw'
    });

  });

</script>



就變成我們看的懂得啦!


官方說明文件:
https://fullcalendar.io/docs/locale

php CodeIgniter 使用 mongoDB

這是使用的外掛
http://intekhab.in/mongodb-library-for-codeigniter.html

安裝設定主要是要設定 config 和 library 這個部分可以在這邊直接找到 github 連結下載即可。

使用的方式在官方的文件上面並沒有很清楚的著墨 所以我們在這邊補充一下


資料新增 insert
$user = array('username' =>"james", 'name' => "wolf2","time"=>time()); $this->mongo_db->insert('users', $user);
這樣就完成了資料新增的動作了,需要注意的一點就是:雖然 mongodb 是 json 的儲存方式。但是 CIMongo 要求輸入的格式是陣列喔


取得資料 get
$list = $this->mongo_db->get('users');

找尋資料 where
$list = $this->mongo_db->where('name','wolf2')->get('users');