php、javascript中的转义字符

php、javascript中的转义字符,javascript,php,html,escaping,Javascript,Php,Html,Escaping,我有一个页面,用户在一天结束时添加他们的报告。他们点击“添加报告”按钮,然后它会显示他们需要键入报告的文本区域。在他们输入并保存之后,我将其发送到数据库。但在写入数据库之前,我使用此函数来转义字符: db::$conn->real_escape_string($str); 并报告它已成功保存。当我使用MySQL Workbench打开数据库表时,我会在一行中看到报告,如果它包含新行,它不会显示,但如果我将光标移到它上面,它会显示新行所在的工具提示 之后,我需要显示报告表并启用编辑。问题是

我有一个页面,用户在一天结束时添加他们的报告。他们点击“添加报告”按钮,然后它会显示他们需要键入报告的文本区域。在他们输入并保存之后,我将其发送到数据库。但在写入数据库之前,我使用此函数来转义字符:

db::$conn->real_escape_string($str);
并报告它已成功保存。当我使用MySQL Workbench打开数据库表时,我会在一行中看到报告,如果它包含新行,它不会显示,但如果我将光标移到它上面,它会显示新行所在的工具提示

之后,我需要显示报告表并启用编辑。问题是,当我点击编辑按钮时,它应该显示textarea并在其中报告,但我得到的却是空的textarea。我发现问题在于转义字符。这就是我在表中呈现“编辑”按钮的方式

$report = $row['user_report'];
$report = str_replace('"', '\"', $report);
$report = str_replace("'", "\'",$report);
$report = htmlspecialchars($report, ENT_QUOTES);
$r[] = '<a onclick="$(\'#editReport\').val(\''.$report.'\'); $(\'#editComment\').attr(\'onClick\', \'EditReport('.$row['id'].'); return;\');" class="btn-action glyphicons pencil btn-info" data-toggle="modal" data-target=".bs-modal-ld"><i></i></a>';
但如果我像这样进入,它会起作用:

Fixed bugs on "User report" page. Developing Transaction page. Developing admin users page.
编辑: 我用另一个str_替换(“\n”、“\\n”、$report”)修复了它;
它现在起作用了:这太糟糕了。考虑使用JavaScript查找内容并获取其数据,而不是将整个内容复制到联机事件处理程序中,因为这永远不会起作用;p> 您应该使用
json\u encode
函数

这样试试

$report = json_encode($row['user_report']); // no need str_replace 

我曾想过这样做,但我现在正试着这样做,并把它作为最后的手段:D
Fixed bugs on "User report" page. Developing Transaction page. Developing admin users page.
$report = json_encode($row['user_report']); // no need str_replace