× 說心事 政治時事 生活 運動 汽車 機車 自行車 相機 科技 理財 旅遊美食 娛樂 健康 美麗時尚 人際關係 文學故事 關於《思書》
吃喝玩樂 關於《思書》

Rails 簡易的讓字串變乾淨

紅寶鐵軌客
來關注...
關注:紅寶鐵軌客
關注有什麼好處?:當作者有新文章發佈時,「思書日報」就會匯總自動通知您,讓您更容易與作者互動。
x
紅寶鐵軌客
Rails 使用中,折磨中,享受中......
Victorian vintage round cut ruby engagement ring in 14k yellow gold 7mm center vs g h 984
    很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
     
    就,這會一點點,那會一點點⋯⋯
作者最新發佈的文章:
  • Rails 如何檢查 URL 是否存在?
  • Rails 為什麼要使用 escape_javascript?
  • Rails 使用 Javascript Ajax 很簡單
作者最近參與的討論:
  • Rails 常見資安陷阱與解決方法
現在就加入《思書》,你就可以關注本作者了!
《思書》是一個每個人的寫作與論壇平台,特有的隱私管理,讓你寫作不再受限,討論更深入真實,而且免費。 趕快來試試!
還未加入《思書》? 現在就登錄! 已經加入《思書》── 登入
Rails 使用中,折磨中,享受中......
2018/07/08
5   0  

寫動態網頁,少不了就是字串變來變去,這其中有幾個關鍵名詞很重要:

Escape / Unescape,中文叫「跳脫特殊字元」

主要是要將  & " ' < >  這五種字元,轉來轉去,例如:

  • <p>test</p>\r\n<p>&nbsp;</p>

Escape 會變成:

  • &lt;p&gt;test&lt;/p&gt;\r\n&lt;p&gt;&amp;nbsp;&lt;/p&gt;

一般 Escape 主要都是用在網址上,談到網址,最討厭的就是中文編碼問題了,這時就有一個新名詞:

URI encode,中文叫「網址編碼」

主要是用在 ASCII 的控制字元,非 ASCII 字元(像是中日韓文),你常看到的%1234,就是,但是 URI encode 主要是為了安全性考量,例如:

  • https://www.scrivinor.com/article/網路時代2017-之一

URI encode 會變成:

  • https://www.scrivinor.com/article/%E7%B6%B2%E8%B7%AF%E6%99%82%E4%BB%A32017-%E4%B9%8B%E4%B8%80

JavaScript 有兩個相關的 function - encodeURI(), encodeURIComponent(),舊的 escape() 就不要用了

  1. encodeURI() :用來編碼整條 URL ,不會連前面 https://www.scrivinor.com 的部分都編掉,變成https%3A%2F%2Fwww.scrivinor.com,不編碼:~!@#$&*()=:/,;?+'
  2. encodeURIComponent() :用來編碼 URL 參數,不編碼:~!*()'

還有一個常用的,就是如何

移除字串中 HTML 標記及 ASCII 控制字元

在,這在 Rails 中超級簡單,例如:

s1 = "<p>test</p>\r\n<p>&nbsp;</p>
s2 = helper.strip_tags(s1).squish = "test"

我們常會在網頁上要顯示一行原本是HTML編碼的字串,這時,就用以下這個:

truncate(helper.strip_tags(原始字串).squish, escape: false, length: 希望的字串長度)

這真的很好用,不用再 gsub 來來去去!

關於作者
很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
 
就,這會一點點,那會一點點⋯⋯


標籤: 網頁字串處理 x 1 uri encode x 1 escape x 1 rails string x 1

分享:


參與討論!
x
現在就加入《思書》,馬上參與討論!
《思書》是一個每個人的寫作與論壇平台,特有的隱私管理,用筆名來區隔你討論內容,讓你的討論更深入,而且免費。 趕快來試試!
還未加入《思書》? 現在就登錄! 已經加入《思書》── 登入