Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在echo语句中混合html和php变量_Php_Html - Fatal编程技术网

在echo语句中混合html和php变量

在echo语句中混合html和php变量,php,html,Php,Html,这可能是我在一个语句中使用单引号和双引号时遇到的问题。但我有一段代码: echo '<form> <input type="submit" value="$number" onClick="function();"> </form>' 这将正确地输出$number的值,但我习惯在echo语句周围使用单引号,并希望保持这种方式。为什么把所有单引号都换成双引号,把双引号换成单引号就能解决问题?是否对第一段代码进行了修改,允许我在echo上

这可能是我在一个语句中使用单引号和双引号时遇到的问题。但我有一段代码:

echo '<form>
      <input type="submit" value="$number" onClick="function();">
      </form>'

这将正确地输出$number的值,但我习惯在echo语句周围使用单引号,并希望保持这种方式。为什么把所有单引号都换成双引号,把双引号换成单引号就能解决问题?是否对第一段代码进行了修改,允许我在echo上保留单引号,在属性上保留双引号?

在PHP中,双引号内的变量被处理和计算,而在单引号中,所有内容都被视为字符串的一部分

这里有一个更好的解释:

以上链接中的双引号示例:

$something="Oh something";
echo "My answer is $something.<br>";
//result is: My answer is Oh something
echo 'My answer is $something.<br>';
//result is: My answer is $something.
$something=“噢something”;
echo“我的答案是$something.
”; //结果是:我的答案是什么
上述链接中的单报价示例:

$something="Oh something";
echo "My answer is $something.<br>";
//result is: My answer is Oh something
echo 'My answer is $something.<br>';
//result is: My answer is $something.
echo“我的答案是$something.
”; //结果是:我的答案是$某物。
使用单引号时,除单引号外,所有内容都是按字面意思理解的。使用双引号时,PHP假定以美元符号($)开头的任何内容都是变量。使用变量时,我通常喜欢以双引号开始echo。

如果要继续使用单引号,则需要使用append运算符(句点)

echo'
';

PHP将单引号字符串和双引号字符串区分为不同的东西。单引号字符串是文本,您希望它们按原样输出。将解释(扫描)任何PHP变量的双引号字符串,并进行适当的替换

这只是该语言的一个特性(也是一个有用的特性)。实际上,我建议您习惯在所有语言中对字符串使用双引号。没有语言是不可接受的,在静态类型语言(C,C++,java,…)中,单引号表示字符,而双引号表示字符串。也就是说,
stringfoo='mystring'会在Java中出错,就像char*foo='mystring'一样然而,
charfoo='a'是有效的,正如
String foo=“我的字符串”


只有当您需要从PHP中获得最后几纳秒的性能时,才可以将双引号字符串转换为单引号字符串。在其他语言中,这并不重要。顺便说一句,PHP是唯一一种能够区分特定于字符串的双引号和单引号的语言。

PHP对双引号字符串执行所谓的变量插值,这意味着搜索字符串中可能包含的任何变量,这些变量的值在字符串中被替换。如果要保留单引号,则需要将字符串和变量连接在一起,如下所示:

echo '<form>
<input type="submit" value="' . $number . '" onClick="function();">
</form>';
echo'
';
或者,如果要保留双引号,可以转义要打印的双引号:

echo "<form>
<input type=\"submit\" value=\"$number\" onClick=\"function();\">
</form>"
echo”
"

在PHP中,双引号字符串会自动解析其中包含的任何变量,但单引号字符串不会。因此:

$myVar = 21;
echo "myVar: $myVar"
这将输出文本:
myVar:21

鉴于:

$myVar = 21;
echo 'myVar: $myVar'
这将输出文本:
myVar:$myVar

代码的一个问题是,在HTML中,元素属性的值必须用双引号括起来,而不是单引号。我知道有些浏览器会接受这种形式(甚至根本不加引号),但这不是正确的方法

正确地实现你的愿望有多种方法

方法一:转义双引号字符串:

$myVar = 21;
echo "<div id=\"$myVar\"></div>";
$myVar = 21;
echo '<div id="' . $myVar . '"></div>';
这将导致生成的HTML代码包含以下内容:

<div id="lol"><script>alert('XSS!');</script></div><div id="lol2"></div>
$myVar = $_POST['whatever'];
echo '<div id="' . htmlspecialchars($myVar) . '"></div>';

你可以这样做,避免整个歌舞。我认为它更容易阅读

<form>
    <input type="submit" value="<?php echo $number; ?>" onClick="myFunction()">
</form>


这对我来说是一样的

    echo '<link rel="apple-touch-icon-precomposed" sizes="57x57" href='. ${base_url_favicon} . '/apple-touch-icon-57x57.png />'."\n";
echo "<link rel='apple-touch-icon-precomposed' sizes='57x57' href='${base_url_favicon}/apple-touch-icon-57x57.png' />\n";
echo“”。“\n”;
回音“\n”;

作为旁注,如果用双引号括起来,最好将字符串其余部分的双引号转义,而不是对html属性使用单引号。使用此方法,如果我想将同一变量发送到function(),括号内的语法是什么?我可以不加引号地输入$number吗?
onClick=“function(\'.$number.\');“
如果它是简单的文本/数字类型(并且不需要在客户端进行编辑),或者在函数调用
var num=this.value
中输入。两者都可以,我倾向于后者。根据第二部分,如果它只是一个数字,那么就不需要内部引号:
onClick=“function('.$number');“
如果我想将同一个变量发送到function(),在这两种情况下,括号内的语法是什么?我可以在没有引号的情况下输入$number吗?如果在第一个示例中输入了没有引号的$number,则将值
$number
传递给函数;另一方面,如果在第二个示例中这样做,PHP将替换$number的值,这是您想要的。
    echo '<link rel="apple-touch-icon-precomposed" sizes="57x57" href='. ${base_url_favicon} . '/apple-touch-icon-57x57.png />'."\n";
echo "<link rel='apple-touch-icon-precomposed' sizes='57x57' href='${base_url_favicon}/apple-touch-icon-57x57.png' />\n";