dsg435665475 2018-08-09 14:57
浏览 108
已采纳

php将变量传递给标签

I have a function that passes a variable to the "label" tag. For some reason, it just won't display the variable in the "label" tag. Here's my code:

function radioButton($id, $name, $value, $txt){
   $str = "";
   $str .= '
      <input type="radio" id=$id name=$name value=$value checked>
      <label class="custom-control-label" for=$id> <?php echo $txt; ?></label>
   ';
   return $str;
}

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
   <?php echo radioButton("MyID", "MyName", "MyValue", "Do Nothing"); ?>

   <input type="submit" name="submit" value="Submit"><br>
</form>

The radio button is display but not the variable in the "label" tag. I tried wrapping my variable with the php tag as someone on the internet suggested but it gives me a blank. https://www.codeproject.com/Questions/1119369/Pass-PHP-variable-value-into-HTML-label

Is this even possible?? To pass a variable to an html label tag in php??

  • 写回答

1条回答 默认 最新

  • douzhongjiu2263 2018-08-09 15:03
    关注

    There are a couple problems with your code:

    • The string needs to be declared with quotes around it, not single quotes. This allows easier string concatenation. (PHP Manual)
      • Note: If you don't want to this, you can concatenate like this: $str = '<div>' + $variable + '</div>' (PHP Manual)
    • Wrap your variables with single quotes (When string is defined with double quotes, if it's not, wrap variables with double quotes)
    • You don't need to open your PHP tags when already in PHP.

    This code fixes your issues:

    function radioButton($id, $name, $value, $txt){
       $str = "
          <input type='radio' id='$id' name='$name' value='$value' checked>
          <label class="custom-control-label" for='$id'>$txt</label>
       ";
       return $str;
    }
    

    Some other problems you should consider fixing:

    It's generally frowned upon to have HTML markup inside of PHP, but if you must do this, it's usually better to use heredoc or nowdoc markup, because it looks cleaner, and allows you to do easy string concatenation but also allows you to use double quotes inside the string itself (without escaping them)

    function radioButton($id, $name, $value, $txt){
       $str = <<<RADIOBUTTON
            <input type="radio" id="$id" name="$name" value="$value" checked>
            <label class="custom-control-label" for="$id">$txt</label>
    RADIOBUTTON;
    //note, the line before this can't have any whitespace before it.
       return $str;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用