用变量转义PHP中的引号

时间:2015-03-21 17:15:17

标签: php escaping quotes

关于Stackoverflow有很多关于此的问题,但我还是无法解决这个问题。

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

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>"

4 个答案:

答案 0 :(得分:2)

看起来你没有正确输出html。请注意修复斜杠函数周围的转义引号。另请注意“。”而不是分号。

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

如果要查看所有错误,请包含以下代码。这会抓住分号错误。

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

答案 1 :(得分:1)

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

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

你在&#34; class = \&#34; tableclass \&#34;&gt;&#34;之前过早地结束了echo语句。可附加。

答案 2 :(得分:1)

我讨厌背驮式,但有一半的答案正在解决一个问题,一半的答案正在解决另一个问题。

正如@MingShun所说,你需要将你的分号修复到一段时间(concat)。 你需要在@JimmyScray表示的数据周围获得报价(转义)。

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

答案 3 :(得分:0)

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

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