我可以创建一个PHP函数来创建文本输入字段吗?

时间:2013-05-26 08:15:19

标签: php html function textbox

因此,我将使用多个文本输入框制作几个表单,所以我想要制作一个帮助自动化的功能,这将是一个好主意。

以下是我提出的功能:然而,我得到的结果似乎非常奇怪,是" echo"还有一堆单引号。那里的一切看起来都正确吗?我是PHP的新手,所以如果我错过了一个明显的错误,我真的很抱歉。

    function makeTextInputField($name)
    {
echo '<label for = "<?php $name ?>"> <?php ucfirst($name) ?> </label><input type = "text" name = "<?php $name?>"></input>';
    }

8 个答案:

答案 0 :(得分:3)

你不应该在php中使用任何更多的标签

function makeTextInputField($name)
        {
    echo '<label for = "'.$name.'">'.ucfirst($name).'</label><input type = "text" name = "'.$name.'" />';
        }

答案 1 :(得分:1)

Working Demo

因为您可以在PHP中的strings中插入换行符,所以可以通过在其中使用变量来使您的函数更具可读性:

<?php

    function makeTextInputField($name) {
        $text = ucfirst($name);
        echo "
            <label for='{$name}'>{$text}</label>
            <input type='text' name='{$name}' />
        ";
    }

?>

当你想要使用它时:

<h1>Welcome</h1>
<?php makeTextInputField('email'); ?>

<强>输出

<h1>Welcome</h1>
<label for='email'>Email</label>
<input type='text' name='email' />

答案 2 :(得分:0)

function makeTextInputField($name)
{
echo '<label for = "'.$name.'"> '.ucfirst($name).'</label><input type = "text" name = "'.$name.'"></input>';
 }

那应该有用。

你已经在php了。因此不需要<?php标签。将字符串与。

连接在一起

答案 3 :(得分:0)

尝试使用sprintf

function textInput($name)
{
  $html = '<label for="%1$s">%2$s</label><input type="text" name="%1$s"/>';
  echo sprintf($html, $name, ucfirst($name));
}

答案 4 :(得分:0)

您的问题是,在PHP代码中,您正在打开新的PHP标记,这实际上并不是必需的。试试这个功能,看看它是否适合你:

function makeTextInputField($name)
{
    echo sprintf('<label for="%s">%s</label> <input type="text" name="%s"></input>', $name, ucfirst($name), $name);
}

答案 5 :(得分:0)

<?php

class DeInput
{
    protected $_format = '<div>
                 <label for="%s">%s</label>
                 <input  class="formfield" type="text"   name="%s"  value="%s">
                 </div>';
        public function render($content,$getFullyQualifiedName,$getValue,$getLabel)
    {

        $name = htmlentities($getFullyQualifiedName);
        $label = htmlentities($getLabel); 
        $value = htmlentities($getValue);
        $markup = sprintf($this->_format, $name, $label,  $name, $value);
        return $markup;
    }


}

答案 6 :(得分:0)

将PHP代码放在引号内是一种不好的做法,因此我可以使用(。)指向组合字符串。

以下是我的例子:

function makeTextInputField($name) {
    echo '<label for="'. $name .'">'.ucfirst($name).'</label>';
    echo '<input type="text" name="'.$name .' />';
}

答案 7 :(得分:0)

使用return代替echo,使用结果更容易操作。 您还可以将元素生成拆分为不同的函数,以实现更大的灵活性:

function createLabel($for,$labelText){
    return '<label for = "'.$for.'"> '.ucfirst($labelText).'</label>';
}

function createTextInput($name,$value,$id){
    return '<input type = "text" name = "'.$name.'" id="'.$id.'">'.$value.'</input>';
}

function myTextInput($name,$value,$labelText){
    $id = 'my_input_'.$name;
    return createLabel($id,$labelText).createTextInput($name,$value,$id);
}

echo myTextInput('email','','Type you email');