web_reg_save_param_ex()--常用函数
该函数注册将位于指定边界之间的动态数据保存到参数的请求。
intweb_reg_save_param_ex(“ParamName = <output parameter name>”,[LB [/ IC][BIN] = <value>,] [RB [/ IC] [BIN] = <value>,] <属性列表>搜索过滤器>,LAST);
参数说明:
ParamName:要创建的参数的名称。
LB:动态数据的左边界。参见左边界。
RB:动态数据的右边界请参见右边界。
List ofAttributes::有关每个属性的详细信息,请参阅保存参数注册函数的属性。
属性值字符串(例如,“NotFound =warning”)不区分大小写。
请参阅限制。
SEARCH FILTERS:搜索过滤器,指定缓冲区中搜索数据的部分。请参见“保存参数注册函数的搜索过滤器”
LAST:指示参数列表结束的标记。
web_reg_save_param_ex函数是用于在服务器响应中查找动态数据的服务函数。一般来说,找到的数据用于coorelation。
Left Boundary
如果不指定LB值,或者将该值设置为空字符串,则web_reg_save_param_ex使用数据的开头作为边界。保存从开始到右边界的所有字符。有关指定边界的更多详细信息,请参阅“边界参数”部分。
LB参数可以采用边界限定符。
Right Boundary
参数或动态数据的右边界。如果不指定RB值,或者将该值设置为空字符串,web_reg_save_param_ex将保存从左边界到数据结尾的所有字符。有关指定边界的更多详细信息,请参阅“边界参数”部分。
RB参数可以使用边界限定符。
BoundaryQualifiers
web_reg_save_param_ex的LB和LR参数可以采用以下限定符:
/ IC - 不区分大小写。即使边界值的情况与缓冲区中的字符串中的情况不同,边界也匹配。
/ BIN - 值是转义的二进制代码。请参阅输入二进制代码。
在版本11.00中,支持/ RE限定符。此支持已停止,因为更完整的正则表达式功能现在由web_reg_save_param_regexp提供。
Restrictions(限制)
如果指定了DFES参数并且未指定Scope参数,那么搜索范围是Body(而不是默认值)。
如果同时指定了DFES和Scope参数,并且Scope设置为ALL,则忽略DFES参数。
如果指定了HeaderNames参数并且Scope不是Headers,则会忽略HeaderNames参数。
如果指定了RelFrameID = ALL参数,则Ordinal参数必须为ommited或设置为ALL。
web_reg_save_param_ex等待完成整个下载。不要在之前的web_reg_cross_step_download呼叫中指定的网址上使用它。
有关DFES参数的更多信息,请参阅保存参数注册函数的属性。
有关HeaderNames和Scope参数的更多信息,请参阅保存参数注册函数的搜索过滤器
有关RelFrameID参数的更多信息,请参阅保存参数注册函数和RelFrameID属性的搜索过滤器。
一般信息:
web_reg_save_param_ex是注册类型函数。它注册在服务器响应中查找和动态数据的请求。要保存的数据在指定的左边界和右边界之间。仅在执行下一个操作函数(如web_url)之后才执行操作。
找到的动态数据保存到参数。在使用动态数据的随后函数调用中,在大括号(例如,“{param1}”)中引入参数名称。
由web_reg_save_param_ex注册的请求查找指定边界之间的数据(但不包括),并保存从左边界之后的字节开始并在右边界之前的字节结束的信息。
如果希望字符串周围有前导和尾随空格,并且您不想在参数中使用它们,请在左边界的末尾和右边界的开始处添加一个空格。例如,如果网页包含字符串“您想在哪里和什么时间旅行?”,则呼叫:
web_reg_save_param_ex(“When_Txt”,“LB = Whereand”,“RB = do”
LAST);
在“和”之后有一个空格,并且在“do”之前,将导致“when”作为When_Txt的值。然而,
web_reg_save_param_ex(“When_Txt”,“LB = Whereand”,“RB = do”
LAST);
没有空格,将导致值“when”。
不支持嵌入边界字符。web_reg_save_param_ex对最近的左边界之后的下一个事件进行简单搜索。例如,如果您已将左边界定义为字符“{`和右边界作为字符”}“,那么将保存以下缓冲区c:
{a{b {c}
已定位左边界和右边界。因为不支持嵌入边界,所以`}'匹配最近的`{`出现在c之前。 ORD属性为1.只有一个匹配实例。
web_reg_save_param_ex函数还支持数组类型参数。当指定Ordinal = All时,匹配的所有出现都保存在数组中。数组的每个元素由ParamName_index表示。
请参见参数数组示例。
在以下示例中,参数名称为A:
web_reg_save_param_ex(“A”,“LB / ic =<a href=", "RB=\'>”,“Ordinal = All”,LAST);
第一个匹配保存为A_1,第二个匹配保存为A_2,依此类推。您可以使用以下术语检索匹配的总数:ParamName_count。例如,要检索保存到参数数组的匹配总数,请使用:
TotalNumberOfMatches= atoi(lr_eval_string(“{A_count}”));
下表指示如何使用边界参数来保存参数字符串的部分:
From the beginning of a string until the first right boundary | ||
如果任一边界是empy,则不要指定Ordinal属性。
web_reg_save_param_ex替换已弃用的web_reg_save_param。web_reg_save_param具有用于从HTML格式更改为URL或文本格式的CONVERT属性。此属性不适用于web_reg_save_param_ex。如果需要该功能,请在由web_reg_save_param_ex保存参数后使用web_convert_param设置参数的格式。
web_reg_save_param_ex不会被记录。 您可以将其手动添加到脚本。
所有Web脚本都支持web_reg_save_param_ex。
此示例显示使用web_reg_save_param_ex保存响应正文中LL和RR之间的所有字符串。
Action()
lr_save_string( "HTTP%2F1%2E1%20301%20Moved%20Permanently%0A%0D"
"Content%2DType%3A%20text%2Fhtml%0A%0D"
"Date%3A%20Sun%2C%2014%20Feb%202010%2011%3A15%3A34%20GMT%0A%0D"
"aaLLb%20bLLc%20%2E%2ecRRddRReeRRffLLggsadfsdfsdfRRhhRRiiLLj%20%2d%2DjRRkkLLmmLLnnRRoooRRpppLLqqq%0A%0D",
"Action=http://localhost/cgi-bin/echo.asp",
"Referer=http://localhost/cgi_examples/echo_asp.html",
"Name=code","Value={inParam}", ENDITEM,
/* Getting individual elements from a parameterarray.
Since the parameter created by web_reg_save_param_ex
is called "newParam", the number ofelements
is saved in parameter "newParam_count".
The array elements are parameters"newParam_1",
"newParam_2", ... "newParam_n".
elemCnt = atoi(lr_eval_string("{newParam_count}"));
lr_output_message("Number of items found = %d",elemCnt);
sprintf(arrayParamName, "{newParam_%d}",x);
lr_output_message ("%s: %s",
arrayParamName,
lr_eval_string(arrayParamName));
Action.c(41): Number of items found = 4
Action.c(45): {newParam_1}: c ..c
Action.c(45): {newParam_2}: ggsadfsdfsdf
Action.c(45): {newParam_3}: j --j
Action.c(45): {newParam_4}: nn