2013-05-26 38 views
1

所以我打算用多个文本输入框制作几个表单,所以我想制作一个函数来帮助自动化这将是一个好主意。我可以创建一个PHP函数来创建文本输入字段吗?

下面是我提出的功能:但是,我得到的结果似乎很奇怪,是“回声”和单引号混杂的组合。那里的一切都看起来正确吗?我是PHP的新手,所以如果我错过了一个明显的错误,我真的很抱歉。

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

回答

1

Working Demo

因为你可以在PHP strings插入换行符,可以让你的功能更具可读性使用里面的变量:

<?php 

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

?> 

而且whenver你想使用它:

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

输出

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

你不应该使用更多的标签PHP

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

的'input'标签必须使用此语法关闭。没有必要''。 – 2013-05-26 08:27:53

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

这应该在里面工作。

你已经在php。所以不需要<?php标签。用a连接字符串。

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)); 
} 
0

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

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

我想人们不喜欢'sprintf'。好难过。 :( – elclanrs

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; 
    } 


} 
0

把PHP代码,所以我使用(。)指向的字符串相结合可以用来有些不好的做法。

这是我的例子:

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

使用return这一翻译回声的,它会更容易使用结果来处理。 您也可以生成元素拆分成不同的功能,更加灵活:``

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'); 
相关问题