使用变量转义 PHP 中的引号

Escaping quotes in PHP with variable

在 Whosebug 上有很多关于这个的问题,但我仍然无法解决这个问题。

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

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>"
echo "<tr data-info=" .fixSlashes($row["id"], $categori1); " class=\"tableclass\"><td>"

您在连接运算符 (.) 所在的位置有一个分号 (;)。嗯,在 fixSlashes 函数之后。 class后缀字符串前

在可以追加 "class=\"tableclass\">" 之前,您过早地结束了 echo 语句。

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

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

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

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

如果要查看所有错误包括以下代码。这会捕获分号错误。

error_reporting(E_ALL);
ini_set('display_errors', '1');

我讨厌背负,但一半的答案是解决一个问题,一半的答案是解决另一个问题。

如@MingShun 所说,您需要将分号固定为句号(concat)。 正如@JimmyScray 所说,您需要在数据周围获取引号(转义)。

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