2010-09-17 93 views

回答

22
<!-- set default value for SSI variable "data" -->  
<!--#set var="data" value="" --> 

<!-- get "data" value from URL --> 
<!--#if expr="$QUERY_STRING = /data=([a-zA-Z0-9]+)/" --> 
<!--#set var="data" value="$1" --> 
<!--#endif --> 

<!-- print the "data" value -->  
<!--#echo var="data" --> 
+1

我會將'/ data'改爲'/ \ bdata'('\ b'是一個字的邊界)以避免匹配像'iamnotdata'這樣的變量。 – Blazemonger 2013-08-29 14:27:02

+0

'/ \\ bdata'爲我工作 – alekstrust 2015-02-08 01:49:38

0

老問題我知道,但我只是在自己做一些SSI的時候碰到它。我相信你現在已經解決了你的問題,但是如果這對你沒有幫助,也許它會是別人。我假設服務器是Apache。 (如果沒有,那麼我想這是行不通的!)

首先免責聲明!我絕不是apache,sed或正則表達式的主人,所以我相信隨後可以改進,但這可能是一個開始。它只是打印相對於網站底部和數據查詢參數的頁面。

<!--#echo var="DOCUMENT_URI" --> 
<!--#exec cmd="echo '$QUERY_STRING' | sed -n 's/\([^&]*&\)*data=\([^&]*\).*/\2/p'" --> 

我發現Apache的環境變量here: http://www.zytrax.com/tech/web/env_var.htm的列表,並找出你可以用這個東西做什麼,一旦你已經檢索到它look here: http://httpd.apache.org/docs/2.0/howto/ssi.html

編輯當沒有找到數據屬性時,使它不會打印整個字符串。