我有这两行我想逃避$ type变量:
$functionName = str_replace('-', '_', $type);
$output .= '<div class="tab-pane" id="'. $type .'">';
我尝试像下面那样逃避,但令我困惑,不确定这是否正确:
$output .= '<div class="tab-pane" id="\'. $type .'\">';
答案 0 :(得分:2)
你的第一个块正在进行字符串替换,但是你使用ORIGINAL字符串,而不是替换字符串:
$output .= '<div class="tab-pane" id="' . $functionName . '">';
会更正确。在第二个,您将转义'
引号,这意味着您永远不会终止字符串,这意味着. $type .
部分在字符串中被视为纯文本,而不是PHP连接操作。尝试
$output .= '<div class="tab-pane" id="' . $type . '">';
代替。请注意反斜杠的消失。
当然,您可以使用HEREDOC,无需完全逃避引号:
$output .= <<<EOL
<div class="tab-pane" id="{$functioName}">
EOL;
答案 1 :(得分:2)
示例1:单引号之间的变量
如果您使用单引号,它们之间的所有内容将始终被视为字符串的一部分。
$output .= '<div class="tab-pane" id="' . $type . '">";
示例2:双引号之间的变量(选项1)
如果你有一个你希望传入一个字符串的变量,你可以把它放在那里,如果你使用双引号而de变量是nog&#39; touch&#39;换句话说。它应该总是有空格。
$output .= "<p>i would like to $your_text_here with you.</p>";
示例3:在字符串中转义引号
在字符串中转义字符可以通过在要转义的字符前使用\(反斜杠)来完成。
$output .= "<div class=\"tab-pane\" id=\"example-id\">";
示例4:双引号之间没有空格的变量
如果使用双引号(选项2)
,则可以将变量置于{}括号之间$output .= "<div class=\"tab-pane\" id=\"{$type}\">";
已经回答了这个问题
答案 2 :(得分:-1)
在这种情况下,您根本不需要逃避。 您只能在相同类型的引号内转义。你不会在单人内部或单人内部双重逃脱。
因此,对于'o'reilly'
,您会像'o\'reily'
一样逃脱。但是对于"o'reilly"
,您只需将其保留为"o'reilly"
。但是"He said "hello""
"He said \"hello\""
你逃脱'He said "hello"'
。然而,$type
你根本不会逃脱。
但是,如果您的$type
变量可以包含双引号,则需要考虑这一点以防止HTML在这种情况下被破坏。如何处理变量"
中的引号将是将$output .= '<div class="tab-pane" id="' . str_replace('"', '"', $type) . '">';
替换为其等效的HTML实体:
id="contents_of_type_variable"
或者使用htmlentities()来完成相同的替换。
请注意,它是 中的双引号,您想要处理的变量,而不是在外面使用单引号。因为大概是问题是如果变量包含双引号,它会破坏你的HTML,因为你在id的值周围使用双引号:
即。 id="contents"_of_type_variable"
如果您有id="contents"_of_type_variable"
,您的HTML就会被破坏。
因此,您将其更改为{{1}}
如果您试图逃避其他事情,那是因为误解。