用变量转义PHP中的引号


Escaping quotes in PHP with variable

关于Stackoverflow有很多问题,但我仍然无法解决。

我正在尝试将多个变量放入全局属性数据-*中。输出应为:

data-info="23;thisWeek"

23来自数据库$row["id"],thisWeek来自变量$categori1。

我试过:

echo "<tr data-info=" .fixSlashes($row["id"], $categori1); " class='"tableclass'"><td>"

然后

<?php
function fixSlashes($idP, $categoriP){
$str = addslashes($idP . ";" .$categoriP);
return $str;
}
?>

但是出了问题。没有错误信息,但行为是错误的。如果我只写:

echo "<tr data-info="data-info="23;thisWeek" class='"tableclass'"><td>"

您似乎没有正确输出html。请注意fix斜杠函数周围的转义引号。还要注意"."而不是分号。

"<tr data-info='"" .fixSlashes($row["id"], $categori1) . "'" class='"tableclass'"><td>"

如果要查看所有错误,请包括以下代码。这会导致分号错误。

error_reporting(E_ALL);
ini_set('display_errors', '1');
echo "<tr data-info=" .fixSlashes($row["id"], $categori1); " class='"tableclass'"><td>"

在fixSlashes函数后面,有一个分号(;),其中concat运算符(.)应该是.Umm。在类后缀字符串之前。

在追加"class=''"tableclass ''">"之前,您提前结束了echo语句。

我讨厌背锅,但一半的答案得到了一个问题,一半的答案获得了另一个问题。

正如@MingShun所说,你需要将你的分号固定为句点(concat)。正如@JimmyScray所说,你需要对你的数据进行引号(转义)。

echo "<tr data-info='"" .fixSlashes($row["id"]. $categori1). "'" class='"tableclass'"><td>";

使用转义序列显示双引号,并对id(即$row['id'])使用单引号

 echo "<tr data-info='" $row['id'];$categori1'" class='"tableclass'"><td>";