在HTML输入标记中运行PHP函数

时间:2015-11-19 21:27:16

标签: php html wordpress

我已经查看过有关此问题的其他问题,但没有人对我有任何答案。我有这行代码:

foreach ( $categories as $category ){

echo '<label><input type="checkbox" id="type-'. $category->name . '" value="'. $category->name . '" class="shopping" name="top_level[]"  <?php checked('. $category->name . ', $current)  ?>>'. $category->name . '</label>';
}

当我运行该文件时,会显示正确的字段但是有一个&#39;&gt;&#39;在文本前面。 Firebug将HTML输出显示为:

<input type="checkbox" id="type-Fashion" value="Fashion" class="shopping" name="top_level[]" <?php="" echo="" checked(fashion,="" $current)="" ?="">

为什么整个PHP代码中都存在所有这些=""

checked()函数是Wordpress并返回HTML属性checked='checked',但我认为问题在于在HTML标记中使用PHP。

该文件以.php保存,我在我的WampServer上运行PH P5.5.12。

我尝试过很多事情,以及别人的建议:

foreach ( $categories as $category ){
?>
    <label><input type="checkbox" id="type-<?php echo $category->name; ?> value="<?php echo $category->name; ?>" class="shopping" name="top_level[]"  <?php if(in_array($category->name, $current)){ echo 'checked="checked"';}  ?>><?php echo $category->name; ?> </label>
  <?php  
    }

出现此错误:

  

警告:IN_ARRAY()表示参数2应该是阵列,BOOLEAN GIVEN

$current是一个数组。

另一篇帖子建议使用等号<?= ..... ?>。这并没有改变任何事情。

如果我从输入标签中删除PHP代码,一切正常。

我很感激任何帮助。提前谢谢!

2 个答案:

答案 0 :(得分:2)

请注意上面的颜色突出显示。您错过了"

[..snip..]id="type-<?php echo $category->name; ?> value="<?[..snip..]
                                                 ^---here

因此id属性在value=之后才会终止,导致所有的key = value对都不同步。

您所看到的是您的浏览器尝试清理您正在生成的错误HTML。

答案 1 :(得分:2)

您只需要在执行文字输出时使用<?php(在使用?>退出脚本模式后),而不是在您执行PHP程序代码时。如果您在echo语句中,则表示您正在执行PHP代码。只需连接函数调用就像连接变量一样。

echo '<label><input type="checkbox" id="type-'. $category->name . '" value="'. $category->name . '" class="shopping" name="top_level[]"' . checked($category->name, $current) . '>'. $category->name . '</label>';