尝试替换字符串时php中的分析错误
我有以下代码行:尝试替换字符串时php中的分析错误,php,javascript,Php,Javascript,我有以下代码行: foreach ($searchResults as $key=>$question) { echo '<tr class="questiontd"><td>'.htmlspecialchars($question).'</td>'; echo '<td class="optiontypetd">'.htmlspecialchars($searchOption[$key]).'</td>'; e
foreach ($searchResults as $key=>$question) {
echo '<tr class="questiontd"><td>'.htmlspecialchars($question).'</td>';
echo '<td class="optiontypetd">'.htmlspecialchars($searchOption[$key]).'</td>';
echo '<td class="noofanswerstd">'.htmlspecialchars($searchNoofAnswers[$key]).'</td>';
echo '<td class="answertd">'.htmlspecialchars($searchAnswer[$key]).'</td>';
echo '<td class="noofrepliestd">'.htmlspecialchars($searchReply[$key]).'</td>';
echo '<td class="noofmarkstd">'.htmlspecialchars($searchMarks[$key]).'</td>';
echo "<td class='addtd'><button type='button' class='add' onclick=\"parent.addwindow('$question','$searchMarks[$key]','$searchNoofAnswers[$key]','$searchOption[$key]','$searchReply[$key]','$searchAnswer[$key]');\">Add</button></td></tr>";
}
foreach($searchResults作为$key=>$question){
echo.''htmlspecialchars($问题)。'';
echo'.htmlspecialchars($searchOption[$key])。';
echo'.htmlspecialchars($searchNoofAnswers[$key])。';
echo'.htmlspecialchars($searchAnswer[$key])。';
echo'.htmlspecialchars($searchReply[$key])。';
echo'.htmlspecialchars($searchMarks[$key])。';
附和“添加”;
}
现在我想用str_repace替换一些字符串,但当我这样做时,我在上面的一行中得到了这个错误:
分析错误:语法错误,意外的T\u常量\u已装入\u字符串
…第154行的text.php
如何删除此错误
更新:
好的,我删除了前面提到的单引号,但问题是它弄乱了我的添加按钮。现在,当我单击“添加”按钮时,出现此错误:
syntaxError:未终止的字符串文字错误:
parent.addwindow(“
控制台中显示错误的代码行如下所示:
<button type='button' class='add' onclick="parent.addwindow('!"�$%^&*()-=\'.,:;/?#~*/\\><'
T_常量_封装_字符串
基本上是一个引号不匹配。StackOverflow的语法高亮显示使颜色变化更加明显
$question')
删除单一报价,你应该是好的
后续行动:
选择:
如前所述,您可以使用herdeoc
(尽管我个人认为从可读性的角度来看,这在这个特定场景中没有帮助——您仍然在HTML语法中嵌入了很多变量)。另一种方法是将parent.addwindow
参数存储为变量,然后在字符串中传递它(避免使用扩展回显线路和担心报价不匹配。例如:
$addWindowArgs = "'" . implode("','", array(
str_replace('"','"', $question),
$searchMarks[$key],
$searchNoofAnswers[$key],
$searchOption[$key],
$searchReply[$key],
$searchAnswer[$key]
)) . "'";
echo "<td class=\"addtd\">"
. "<button type=\"button\" class=\"add\" onclick=\"parent.addwindow({$addWindowArgs});\">Add</button>"
. "</td></tr>";
如果某些参数是数字,某些参数是字符串等,这将为您提供更多的控制。在输出html/js时使用heredoc语法——您会发现它更容易阅读,也不太可能出错。@Cups如何使用heredoc语法?googleheredoc php
并获得启发!尝试删除单引号$question后面的标记(')最大的问题是在使用herdoc时不要习惯性地缩进代码。每次我都会这样做——尤其是最后一行!问题是,如果我删除了引号,那么所有变量都会进入“Add”按钮,它弄乱了按钮,所以我需要引用,这是否意味着我需要在某处添加一个额外的引用?让我对我的问题进行更新,以便您可以看到问题的更新,以便您可以看到我在删除quote@user1701484:查看我的最新答案。(在我看来,你的问题是你把单引号放在哪里——它需要在一组双引号中。嗨,对不起,我不得不跑腿,我已经发布了主代码,这样你可以在问题的顶部看到代码是什么样子。如果你编辑你的答案以适应我的代码,可以吗?因为当你尝试使用你的方法时,它会给我带来问题,因为echos的e。这只是$QUEST变量给我带来了问题。其他变量不会遇到这个问题。谢谢:)没关系,我解决了,谢谢你的帮助tho:)
$addWindowArgs = sprintf("'%s','%s','%s','%s','%s','%s'",
str_replace('"','"', $question),
$searchMarks[$key],
$searchNoofAnswers[$key],
$searchOption[$key],
$searchReply[$key],
$searchAnswer[$key]
);