PHP echo 没有产生正确的结果,将字符串转为小写
PHP echo not producing correct result, turning string lowercase
我正在尝试回显调用 javascript 函数的动态标签,但参数没有正确回显。他们应该保留他们的大写字母而不是增加间距。为什么要这样做?
我试过删除变量并用我想要的直接回显字符串,但它仍然显示不正确。
我需要的:
echo '<a href="'.$info[0].'" onClick="redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")"><img src="'.$info[1].'"/></a>'
纯字符串版本:
echo '<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")"><img src="/images/calc-eng-desktop.png"></a>'
输出:
<a href="/calc" onclick="redirTrackCalcBtn(" test_button_1",="" "="" calc")"="">
<img src="/images/calc-eng-desktop.png">
</a>
应该输出:
<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")">
<img src="/images/calc-eng-desktop.png">
</a>
我也试过:
echo "<a href=\"".$info[0]."\" onClick=\"redirTrackCalcBtn(\"".$bname."\", \"".$info[0]."\")\"><img src=\"".$info[1]."\"/></a>";
但仍然输出:
<a href="/calc" onclick="redirTrackCalcBtn(" test_banner_1",="" "="" calc")"=""><img src="/images/calc.png"></a>
根据 Dharman 的回复,我也尝试过:
echo '<a href="'.$info[0].'"
onClick=\"redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")\"
><img src="'.$info[1].'"/></a>'
这输出:
<a href="/calc" onclick="\"redirTrackCalcBtn("Test_Banner_1"," "="" calc")\"="">
<img src="/images/preguntanos-h-es.png">
</a>
编辑上下文:
它适用于由 WordPress 提供支持的博客内容中的动态横幅。
需要escape one set of the double-quotes,否则会混在一起。由于你在PHP中使用了single-quotes,你需要在HTML/JavaScript中使用double,然后再次使用single-quotes,但是这次从PHP.[=中转义了16=]
echo '<a href="'.$info[0].'" onClick="redirTrackCalcBtn(\''.$bname.'\', \''.$info[0].'\')" ><img src="'.$info[1].'"/></a>';
JavaScript 个变量包含在 \'
中
或
echo '<a href="'.$info[0].'" onClick=\'redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")\' ><img src="'.$info[1].'"/></a>';
onlick 部分现在用转义引号括起来,其他一切保持不变。
你有 3 种语言混合在一起,3 层:
PHP will use '
-->HTML will use "
---->JavaScript will use \'
每一个都使用双引号或单引号,您只有两个可供选择。因此你需要逃脱其中之一。
一个更简单的例子:
echo '<a onclick="alert(\'hi\')">Hello</a>';
也许克服引号转义混淆的更简单方法是以不同的方式分配字符串。您可以使用 heredoc 表示法删除一层引用。
as an aside, your "correct" output is not correct:
onclick="redirTrackCalBtn("
Test_Button_1, "/calc"
)">
<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")">
<img src="/images/calc-eng-desktop.png">
</a>
您的 HTML 应如下所示:
<a href="/calc" onclick="redirTrackCalcBtn('Test_Button_1', '/calc')">
<img src="/images/calc-eng-desktop.png">
</a>
使用 Heredoc 表示法,您不必连接和转义,只需按照 HTML 应该的方式写出来:
$link =<<<LINKINFORMATION
<a href="{$info[0]}" onclick="redirTrackCalcBtn('{$bname}', '{$info[0]}')">
<img src="/images/calc-eng-desktop.png">
</a>
LINKINFORMATION;
echo $link;
您可以使用以下技巧简化表达式...
- HTML 接受属性的单引号或双引号。
- PHP 可以计算双引号分隔字符串内的变量。这可以让你的表达更容易理解。
所以基于此,答案是:
<?php
echo "<a href='{$info[0]}' onClick='redirTrackCalcBtn(\"{$bname}\", \"{$info[0]}\")'><img src='{$info[1]}'/></a>";
这将给出以下结果...
<a href='/calc' onClick='redirTrackCalcBtn("test_button_1", "/calc")'><img src='/images/calc-eng-desktop.png'/></a>
在您的问题中,您显示了纯字符串版本以及您认为的正常输出。这两个输出都是错误的。你不能使用像 onclick="redirTrackCalcBtn("Test_Button_1", "/calc")"
这样的东西,因为左括号后面的双引号完成了 onclick 属性,它变成了 onclick="redirTrackCalcBtn("
。之后,浏览器将尽力寻找以下属性及其值。因此,您看到的 space 只是属性之间的自然 space。
总之,echo
没有错。
我正在尝试回显调用 javascript 函数的动态标签,但参数没有正确回显。他们应该保留他们的大写字母而不是增加间距。为什么要这样做?
我试过删除变量并用我想要的直接回显字符串,但它仍然显示不正确。
我需要的:
echo '<a href="'.$info[0].'" onClick="redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")"><img src="'.$info[1].'"/></a>'
纯字符串版本:
echo '<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")"><img src="/images/calc-eng-desktop.png"></a>'
输出:
<a href="/calc" onclick="redirTrackCalcBtn(" test_button_1",="" "="" calc")"="">
<img src="/images/calc-eng-desktop.png">
</a>
应该输出:
<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")">
<img src="/images/calc-eng-desktop.png">
</a>
我也试过:
echo "<a href=\"".$info[0]."\" onClick=\"redirTrackCalcBtn(\"".$bname."\", \"".$info[0]."\")\"><img src=\"".$info[1]."\"/></a>";
但仍然输出:
<a href="/calc" onclick="redirTrackCalcBtn(" test_banner_1",="" "="" calc")"=""><img src="/images/calc.png"></a>
根据 Dharman 的回复,我也尝试过:
echo '<a href="'.$info[0].'"
onClick=\"redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")\"
><img src="'.$info[1].'"/></a>'
这输出:
<a href="/calc" onclick="\"redirTrackCalcBtn("Test_Banner_1"," "="" calc")\"="">
<img src="/images/preguntanos-h-es.png">
</a>
编辑上下文: 它适用于由 WordPress 提供支持的博客内容中的动态横幅。
需要escape one set of the double-quotes,否则会混在一起。由于你在PHP中使用了single-quotes,你需要在HTML/JavaScript中使用double,然后再次使用single-quotes,但是这次从PHP.[=中转义了16=]
echo '<a href="'.$info[0].'" onClick="redirTrackCalcBtn(\''.$bname.'\', \''.$info[0].'\')" ><img src="'.$info[1].'"/></a>';
JavaScript 个变量包含在 \'
或
echo '<a href="'.$info[0].'" onClick=\'redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")\' ><img src="'.$info[1].'"/></a>';
onlick 部分现在用转义引号括起来,其他一切保持不变。
你有 3 种语言混合在一起,3 层:
PHP will use '
-->HTML will use "
---->JavaScript will use \'
每一个都使用双引号或单引号,您只有两个可供选择。因此你需要逃脱其中之一。
一个更简单的例子:
echo '<a onclick="alert(\'hi\')">Hello</a>';
也许克服引号转义混淆的更简单方法是以不同的方式分配字符串。您可以使用 heredoc 表示法删除一层引用。
as an aside, your "correct" output is not correct:
onclick="redirTrackCalBtn("
Test_Button_1,"/calc"
)">
<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")">
<img src="/images/calc-eng-desktop.png">
</a>
您的 HTML 应如下所示:
<a href="/calc" onclick="redirTrackCalcBtn('Test_Button_1', '/calc')">
<img src="/images/calc-eng-desktop.png">
</a>
使用 Heredoc 表示法,您不必连接和转义,只需按照 HTML 应该的方式写出来:
$link =<<<LINKINFORMATION
<a href="{$info[0]}" onclick="redirTrackCalcBtn('{$bname}', '{$info[0]}')">
<img src="/images/calc-eng-desktop.png">
</a>
LINKINFORMATION;
echo $link;
您可以使用以下技巧简化表达式...
- HTML 接受属性的单引号或双引号。
- PHP 可以计算双引号分隔字符串内的变量。这可以让你的表达更容易理解。
所以基于此,答案是:
<?php
echo "<a href='{$info[0]}' onClick='redirTrackCalcBtn(\"{$bname}\", \"{$info[0]}\")'><img src='{$info[1]}'/></a>";
这将给出以下结果...
<a href='/calc' onClick='redirTrackCalcBtn("test_button_1", "/calc")'><img src='/images/calc-eng-desktop.png'/></a>
在您的问题中,您显示了纯字符串版本以及您认为的正常输出。这两个输出都是错误的。你不能使用像 onclick="redirTrackCalcBtn("Test_Button_1", "/calc")"
这样的东西,因为左括号后面的双引号完成了 onclick 属性,它变成了 onclick="redirTrackCalcBtn("
。之后,浏览器将尽力寻找以下属性及其值。因此,您看到的 space 只是属性之间的自然 space。
总之,echo
没有错。