使用PHP从<option>标签中获取文本

17
我想获取<option>标签中的文本和它的值。 示例
<select name="make">
<option value="5"> Text </option>
</select>

我使用了$_POST['make']; ,并获得了值5,但我想要获取值和文本

如何使用PHP实现?

6个回答

16

要仅使用PHP获取标签和值,您需要将两个参数作为值的一部分。

例如:

<select name="make">
    <option value="Text:5"> Text </option>
</select>

PHP代码

<?php
$parts = $_POST['make'];
$arr = explode(':', $parts);

print_r($arr);

输出:

Array(
  [0] => 'Text',
  [1] => 5
)

这是一种实现它的方式。


2
对于所有关于这个问题的回复,我认为这是最优雅的一个。我会采用这种方式。 - Pablo Contreras
1
我喜欢这个。今天我学到了新东西。谢谢你。我需要将两个值与表单一起提交,这很完美。 - DevOpsSauce

5

这个怎么样?我认为这是最好的解决方案,因为您将每个数据都分开了。只有一个隐藏字段,在每次更改时更新,并避免硬编码映射。

这是HTML中的代码:

<select name='make' onchange="setTextField(this)">
<option value = '' selected> None </option>
<option value = '5'> Text 5 </option>
<option value = '7'> Text 7 </option>
<option value = '9'> Text 9 </option>
</select>
<input id="make_text" type = "hidden" name = "make_text" value = "" />
<script type="text/javascript">
    function setTextField(ddl) {
        document.getElementById('make_text').value = ddl.options[ddl.selectedIndex].text;
    }
</script>

在 PHP 中,这样写:

<?php
$value = $_POST["make"];
$text = $_POST["make_text"];
?>

1
感谢您编写这行代码 document.getElementById('make_text').value=ddl.options[ddl.selectedIndex].text; - Robert

3

将文本的值设置为选项标签的值,无论是通过静态HTML标记还是通过服务器端脚本生成的。您只能通过POST获取值属性。

然而,在服务器端的另一个选项是将值(“5”)映射到关联数组中,即

<?php
$valueTextMap = array("5" => "Text");

$value = $_POST['make'];  //equals 5
$text = $valueTextMap[$value];  //equals "Text"
?>

2

首先,您需要在值中包含该文本(例如:<option value="5_Text"> Text </option>),然后解析它,或者...

您可以在页面上使用JavaScript将文本作为POST操作中的另一个参数提交。


0

你可以使用 simple dom

<?php 
include('/mnt/sdb1/addons/simplehtmldom/simple_html_dom.php');
$html = file_get_html('tari.html');
$opt = array();
foreach($html->find('option') as $a) {
 $opt[] = $a->value;
}
print_r($opt);
?>

-1

我一直使用非常优雅的解决方案,类似于已经提出的解决方案,不需要大量的额外代码。

HTML

<select name="make">
  <option value="1:First Option">First Option Text</option>
  <option value="2:Second Option">Second Option Text</option>
  <option value="3:Third Option Text">Third Option Text</option>
</select>

PHP

$value = split(':', $make)[0];
$text = split(':', $make)[1];

这种方法的好处
是的,与serialworm的答案肯定有相似之处,但我们通过不引人注目地转换为数组并立即选择所需元素来最小化PHP块中的代码。

在我的情况下,我在联系表单中使用这个精简代码,其中这个一行代码(用于获取所选部门名称)对于保持代码整洁至关重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接