单引号字符串中的变量未正确呈现[重复]

问题描述 投票:0回答:3

我有这个代码

$html = str_replace( '<a','<a class="name"', $html );

我需要在代码中添加一个这样的变量

$html = str_replace( '<a','<a class="$var"', $html );

但这行不通。

编辑:是否可以使用 sprintf 来做到这一点?

关于如何做到这一点的任何想法:

php replace
3个回答
2
投票

方法有很多。这里有两个:

$html = str_replace('<a', '<a class="' . $var . '"', $html);

$html = str_replace("<a", "<a class=\"$var\"", $html);

"
前面的反斜杠称为“转义符”。这意味着
"
将保持原样,并且不会被解释为字符串常量的结尾。


2
投票

当您使用单引号时,变量不会被填充。仅当您有双引号时才会存在此行为。例如,这会起作用:

$html = str_replace( '<a','<a class="' . $var . '"', $html );

这里

.
用于“连接”字符串,换句话说,将它们粘合在一起。

您还可以使用不同的方法,将类名单引号引起来:

$html = str_replace( '<a',"<a class='$var'", $html );

如前所述,这些是双引号。这意味着现在可以用引号对变量进行转义。

它们中的任何一个都会起作用,这就是你真正想要的。


1
投票

您可以将要替换的字符串放在双引号中,并使用不带引号的

$var

$html = str_replace( '<a',"<a class=$var", $html );
© www.soinside.com 2019 - 2024. All rights reserved.