我正在尝试转义字符$
,以便它成为我正在编译的字符串中的文字。我认为这可以解决问题,但显然不是:
$html = $_POST['html'];
$sanitize = htmlspecialchars($html);
$sanitize = str_replace("$", "\$", $sanitize); // Addition.
这是我的基本代码张贴为html
(它最初是html的清洁剂,最后一部分是添加)。
$rp = realpath($_SERVER['DOCUMENT_ROOT']);
include($rp. "_static/inc/db_conn.php");
$conn = mysql_connect($db_host, $db_user, $db_pass); mysql_select_db($db_name);
它产生:
$rp = realpath($_SERVER[\'DOCUMENT_ROOT\']);
include($rp. \"_static/inc/db_conn.php\");
$conn = mysql_connect($db_host, $db_user, $db_pass); mysql_select_db($db_name);
因此,htmlspecialchars()
正如我所期望的那样工作,但不是str_replace()
。
任何帮助/答案都会受到赞赏(抬头,我以前从未使用过str_replace()
,所以我只是按照PHP文档进行了操作。)
答案 0 :(得分:2)
你也需要逃避反斜杠。
$sanitize = str_replace("$", "\\$", $sanitize);
或者,您可以使用单引号。
$sanitize = str_replace('$', '\$', $sanitize);
答案 1 :(得分:0)
尝试使用单引号而不是双引号,例如'$'而不是“$”双引号告诉PHP在字符串中查找变量,这是你不希望它做的。