使用Perl CGI从select元素获取文本而不是值?

使用Perl CGI从select元素获取文本而不是值?,perl,drop-down-menu,cgi,Perl,Drop Down Menu,Cgi,给定HTML表单: <select name="fruit"> <option value="1">Apple</option> <option value="2">Banana</option> </select> 苹果 香蕉 假设用户选择第二个选项并提交表单。在Perl CGI应用程序中,我可以通过调用param('fruit')获得所选的值2。如何获得所选标签,Banana 我在网上搜索了一个小时,找不到答案。那

给定HTML表单:

<select name="fruit">
<option value="1">Apple</option>
<option value="2">Banana</option>
</select>

苹果
香蕉
假设用户选择第二个选项并提交表单。在Perl CGI应用程序中,我可以通过调用
param('fruit')
获得所选的值
2
。如何获得所选标签,
Banana


我在网上搜索了一个小时,找不到答案。

那是不可能的。该信息不会被传输。浏览器仅将
fruit=1
放入它创建的HTTP请求中。您的Perl程序无法获得此信息。它根本就不在那里

通常,Perl程序将控制在这种情况下值的含义。您将在程序中设置一个匹配设置,它知道
1
是苹果,
2
是香蕉

您必须更改
属性。可能是像香蕉一样的东西,以保留
1
,以防在其他地方需要它。在这种情况下,管道
|
是任意的,我选择它是因为您的数据似乎不包含这样的字符


如果无法控制页面,还可以让Perl程序获取包含表单的同一页面并对其进行解析,以查找
1
的含义。但这听起来效率很低。寻找解析HTML的标准方法。

这些不是标签。它们是
元素中的文本节点。相关:@ThisSuitesBlack不是。很高兴我得到了与六年前答案相同的结论。我们应该以复制品的形式结束吗?我不确定,因为我给出了旧答案所没有的另一种方法。为什么不将表单中的值改为“Apple”、“Banana”等?@simbabque我实际上被dup敲打并立即重新打开,因为另一个问题是关于获取
name
属性而不是文本节点。它们几乎是一样的,但我不认为它们是完全重复的,因为有一点不同。或者我建议——如果相关信息是水果名称,那么首先就不需要数字值。