Tag: string
-
Best practice to generate random token in PHP
在 Stackoverflow 看到一篇超級實用的文:在 PHP 中產生隨機字串的最佳實踐。 產生隨機字串這個看似不起眼的議題實作起來還挺麻煩的,曾經為了如何產生字串跟同事討論了許久。 $length = 16; $token = bin2hex(openssl_random_pseudo_bytes($length)); # => e9bf18672b051619a3479ecbe1cb7d08 唯一的參數 $length 可以替換成任意整數,產生的字串長度就是 $length *2。 同場加映,Google Chrome 的亂數演算法也有改過。
-
Output Laravel 4 View as String
覺得 Laravel 這套框架真的有很多眉眉角角的。 這回遇到的是要將 View::make() 的結果當成文字回傳,但 View::make() 回傳的內容似乎是包含 http header 的,無法直接存成純文字。 網路上找到兩種解法,都是官方文件裡沒提到的用法….. #$%^&* $html = (string) View::make(‘foo’, [‘bar’ => ‘baz’]); $html = View::make(‘foo’, [‘bar’ => ‘baz’])->render(); 兩者的差異是前者會遮蔽 Exception,而後者不會。
-
jQuery data() treating string as number
自從 HTML5 開始推廣將自定義參數以 data- 型式標記後,自然也習慣地用 jQuery 的 data() function 來取值。 直到今天碰到一個很奇妙的狀況才注意到 jQuery 會將 data() 取回的資料做轉型。 HTML 長這樣… <div data-mobile-phone=”0919123456″></div> JS 長這樣… alert($(‘div’).data(‘mobile-phone’)); 每次跳出來的視窗內容都是 919123456,顯然被當成 int 處理了。 Google 了一會才發現 jQuery 文件寫了一行…. To retrieve the value’s attribute as a string without any attempt to convert it, use the attr() method. 這沒熟讀文件還真的不知道,所以 JS 部份應改寫為… alert($(‘div’).attr(‘data-mobile-phone’)); 才會得到正確的 0919123456。
-
MySQL 字串連接 concat
在 MySQL 資料庫中想產生一組獨一無二的 key,這樣可以做為比對的依據。打算直接在資料庫上操作新增欄位,至於 key 的產生是很直覺地想用 md5() 這個 function 來處理。但是因為要拿什麼資料來雜湊呢? 想說就用其他欄位加一加,再加上時間來湊。很直覺地寫下這樣的 query SELECT md5( id + name + now() ) 可惜這樣的結果會因為 id 是 int,而且 name 是 string 而產生非預期的結果。解決方法是把所有的欄位轉成 string 來處理,這時候需要 concat() 來組合字串。 SELECT md5( concat( id, name, now() ) ) 這樣就可以得到正確的 md5 值了。 deaf03c84d18a56b70e0b7d6438ada3e