2010-09-17 94 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

编辑当没有找到数据属性时,使它不会打印整个字符串。