【问题标题】:Get Text From <option> Tag Using PHP使用 PHP 从 <option> 标记获取文本
【发布时间】:2011-10-09 17:05:23
【问题描述】:

我想获取 &lt;option&gt; 标签内的文本及其值。

示例

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

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

我如何使用 PHP 做到这一点?

【问题讨论】:

    标签: php text get option


    【解决方案1】:

    为了仅使用 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】:

    我一直使用一个非常优雅的解决方案,类似于已经介绍的那些,不需要很多额外的代码。

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

    在我的例子中,我在联系表单中使用了这个精确的简写代码,其中这一行(用于获取选定的部门名称)对于保持代码看起来干净至关重要。

    【讨论】:

      【解决方案3】:

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

      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"];
      ?>
      

      【讨论】:

      • 感谢此行document.getElementById('make_text').value=ddl.options[ddl.selectedIndex].text;
      【解决方案4】:

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

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

      <?php
      $valueTextMap = array("5" => "Text");
      
      $value = $_POST['make'];  //equals 5
      $text = $valueTextMap[$value];  //equals "Text"
      ?>
      

      【讨论】:

        【解决方案5】:

        您需要将该 Text 包含在开头的值中(例如:&lt;option value="5_Text"&gt; Text &lt;/option&gt; 然后解析,或者...

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

        【讨论】:

          猜你喜欢
          • 2022-09-23
          • 1970-01-01
          • 2021-12-15
          • 2011-04-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-03
          • 2012-08-14
          相关资源
          最近更新 更多