因此,我将使用多个文本输入框制作几个表单,所以我想要制作一个帮助自动化的功能,这将是一个好主意。
以下是我提出的功能:然而,我得到的结果似乎非常奇怪,是" echo"还有一堆单引号。那里的一切看起来都正确吗?我是PHP的新手,所以如果我错过了一个明显的错误,我真的很抱歉。
function makeTextInputField($name)
{
echo '<label for = "<?php $name ?>"> <?php ucfirst($name) ?> </label><input type = "text" name = "<?php $name?>"></input>';
}
答案 0 :(得分:3)
你不应该在php中使用任何更多的标签
function makeTextInputField($name)
{
echo '<label for = "'.$name.'">'.ucfirst($name).'</label><input type = "text" name = "'.$name.'" />';
}
答案 1 :(得分:1)
因为您可以在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');