将PHP值传递给HTML元素而不使用echo


pass php value to html element without using echo

我得到一个值php $_GET[],我想传递它作为一个简单的html输入元素的值。我知道我可以这样做:

<?
     $value     = $_GET['value'];
     echo '<input type="text" name="value" value="'.$value.'" />';
?>

但是有没有办法把php从html中分离出来,把值赋给文本框而不回显它?

我想创建文本框作为常规html元素,只使用php在我设置其值的部分。

Iaroel的答案对我的目的来说更实用,但我喜欢接受的答案涵盖了许多问题的方式-我认为它对其他用户更有价值。

您不希望在$_GET['value']变为未定义时出现错误。

<?php
$value = isset($_GET['value'] ? $_GET['value'] : '');
?>
<input type="text" name="value" value="<?php echo $value; ?>">

但是要注意可以插入$_GET['value']的恶意数据,所以你必须对$value应用适当的卫生


关于" $ _GET['价值']没有PHP "

您可以通过创建一个小的javascript函数来获得它,而无需PHP脚本:

<script type="text/javascript">
    function $_GET(q,s) { 
        s = s ? s : window.location.search; 
        var re = new RegExp('&'+q+'(?:=([^&]*))?(?=&|$)','i'); 
        return (s=s.replace(/^?/,'&').match(re)) ? (typeof s[1] == 'undefined' ? '' : decodeURIComponent(s[1])) : undefined; 
    } 
</script>

那个正则表达式到底是什么?这只是一个与URL匹配模式的问题。

现在,您可以使用此$_GET()方法将值分配给该文本框。在这个例子中,我使用了jQuery:

<script type="text/javascript">
    $(document).ready(function() {
        $('input[name="value"]').attr('value', $_GET('value'));
    });
</script>
现在你的HTML代码就像这样简单:
<input type="text" name="value">

参考:http://www.onlineaspect.com/2009/06/10/reading-get-variables-with-javascript/

如果您不希望回显HTML中的任何内容,请使用Ajax调用来获取值。

$.ajax({
    url: 'getValues.php',
    type: 'post',
    dataType: 'json',
    success: function (json) {
        if (json) {
            $.each(json, function (k, v) {
                $(k).val(v);
            });
        }
    }
});
[PHP]
echo json_encode(array('#first_input_id' => 'val1', '#second_input_id' => 'val2', '.some_classes' => 'val5'));

或者如果值是静态的,你可以使用本地json文件

你的意思是这样吗?

<?php
   $value = $_GET['value'];
?>
<input type="text" name="value" value="<?php echo $value;?>" />

或者这个(不建议):

  <?php
       $value = $_GET['value'];
   ?>
   <input type="text" name="value" value="<?= $someVar ?>" />

但我建议查看模板引擎,例如http://www.smarty.net/

如果你的php配置允许短标签,你可以这样做:

<input type="text" name="value" value="<?=$_GET['value'];?>" />

您可以尝试不返回

<?php  $value     = $_GET['value'];?>
<input type = "text" name = "value" value="<?= $value; ?>" />

如果它对你的项目真的很重要,理想情况下你想把你的php代码从你的html标签中分离出来。这可以通过使用一些模板引擎来实现。

有一些众所周知的可用选项,如果您检查并查看哪一个最适合您的用例,那是最好的。

  • 胡子
  • Smarty
  • 当然还有Twig

可以使用PHP的Heardoc选项。链接在这里。

http://www.hackingwithphp.com/2/6/3/heredoc