r Shiny应用程序中的URL缩短器

时间:2019-03-15 16:00:48

标签: r shiny

我有一个闪亮的应用程序,我们在其中使用书签URL。网址似乎太长。我将这些URL保存在数据表中。如何在添加到应用程序之前使其短路?长网址的Ex如下:

http://127.0.0.1:4534/?_inputs_&bookmarkName=%2211m%22&budget_input=11000000&col=%22table%22&col1=%22bud_digi_table%22&drop624996478=1&drop624996478_state=true&inp_lb=0.5&inp_ub=1.5&iterations=2000&myNavbarPage=%22Optimizer%22&opt_reset=0&opt_run=0

2 个答案:

答案 0 :(得分:1)

使用<a href=full URL target=_blank>URL</a>标签,我们可以在URL标签中传递span并添加属性标题,该属性标题是HTML用作鼠标悬停时默认的属性。这里是如何使用span标签的方法:
<a href=full URL target=_blank> <span title= full URL > Short URL </span> </a>

然后我们将使用JS在span中为data.table显示30的合理长度,这将是library(DT) datatable(data.frame(URLs), options = list(columnDefs = list(list( targets = c(1), render = JS( "function(data, type, row, meta) {", "return type === 'display' && data.length > 30 ?", "'<a href=\"' + data + 'target=\"_blank\"> <span title=\"' + data + '\">' + data.substr(0, 30) + '...</span></a>' : data;", "}") ))))

URLs <- c("http://127.0.0.1:4534/?_inputs_&bookmarkName=%2211m%22&budget_input=11000000&col=%22table%22&col1=%22bud_digi_table%22&drop624996478=1&drop624996478_state=true&inp_lb=0.5&inp_ub=1.5&iterations=2000&myNavbarPage=%22Optimizer%22&opt_reset=0&opt_run=0
", "http://127.0.0.1:4534/?_inputs_&bookmarkName=%2211m%22&budget_input=11000000&col=%22table%22&col1=%22bud_digi_table%22&drop624996478=1&drop624996478_state=true&inp_lb=0.5&inp_ub=1.5&iterations=2000&myNavbarPage=%22Optimizer%22&opt_reset=0&opt_run=0
")

数据

<span class="flag-icon flag-icon-gr"></span>

答案 1 :(得分:0)

以下代码实际上将使用gzip编码压缩一个字符串。以下将原始编码表示为base64字符串:

library(base64enc)

url <- "http://127.0.0.1:4534/?_inputs_&bookmarkName=%2211m%22&budget_input=11000000&col=%22table%22&col1=%22bud_digi_table%22&drop624996478=1&drop624996478_state=true&inp_lb=0.5&inp_ub=1.5&iterations=2000&myNavbarPage=%22Optimizer%22&opt_reset=0&opt_run=0"
gzip_url <- memCompress(charToRaw(url),type="gzip")
compressed_url<-base64encode(what=gzip_url)

rawToChar(memDecompress(from=base64decode(what=compressed_url),type="gzip"))

这确实缩短了总字符串的长度。虽然不多。缩短的更好方法是创建一个单独的查找表,以将某些较长的变量(例如“ bookmarkName”和“ myNavbarPage”等)替换为您控制的变量,例如您可以控制使用的变量“ B”或“ m”字符串替换。否则,任何类型的压缩或编码都需要捕获这些冗长的字符串。这里有一个有用的讨论:An efficient compression algorithm for short text strings

您还可以将其转换为一个很小的URL。这也通过使用长网址使用查找表,并创建了一个替代的较短的参考网址。您可以在内部进行管理,也可以使用标准的微型url服务来进行此操作。还有一个R软件包可以帮助管理此问题,您可以在此处了解更多信息:https://www.r-bloggers.com/urlshortener-a-package-for-shortening-urls/