问题 使用PHP从标签获取文本


我想在里面找到文字 <option> 标签及其价值。

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

我用了 $_POST['make'];  我得到了价值 5 但是我要 同时获得价值和文字

我怎么能用PHP做到这一点?


9519
2017-07-20 20:00


起源



答案:


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

这里面的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"];
?>

4
2017-07-20 20:28



谢谢你这条线 document.getElementById('make_text').value=ddl.options[ddl.selectedIndex].text; - Robert


答案:


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

这里面的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"];
?>

4
2017-07-20 20:28



谢谢你这条线 document.getElementById('make_text').value=ddl.options[ddl.selectedIndex].text; - Robert


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

例如:

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

PHP代码

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

print_r($arr);

输出:

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

这是一种方法。


3
2017-07-20 20:07



对于有关此事的所有回复,我认为这是最优雅的。会走这条路 - Pablo Contreras


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

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

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

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

3
2017-07-20 20:02





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

您可以在页面上使用javascript在POST操作中将文本作为另一个parm提交。


1
2017-07-20 20:04





我一直都很喜欢 优雅的解决方类似于已经提出的,不需要很多额外的代码。

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块中的代码。

在我的情况下,我在联系表单中使用这个确切的简写代码,其中这个单行(获取所选部门名称)对于保持代码看起来干净至关重要。


0
2018-02-19 03:44