试图逃避$,没有像我预期的那样工作?

时间:2011-09-14 01:06:37

标签: php

我正在尝试转义字符$,以便它成为我正在编译的字符串中的文字。我认为这可以解决问题,但显然不是:

$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文档进行了操作。)

2 个答案:

答案 0 :(得分:2)

你也需要逃避反斜杠。

$sanitize = str_replace("$", "\\$", $sanitize); 

或者,您可以使用单引号。

$sanitize = str_replace('$', '\$', $sanitize); 

答案 1 :(得分:0)

尝试使用单引号而不是双引号,例如'$'而不是“$”双引号告诉PHP在字符串中查找变量,这是你不希望它做的。