-1

我有一个 javascript 函数被破坏,因为 ' ('Côte d'Azur') 没有被转义:

Javascript:searchDay('month', 'France', 'Côte d'Azur', '0', '201208', '18');

参数设置如下:

$jsUrl = new JavascriptUrl(
        "searchDay",
        array("id", "country", "region", "city" , "month",  "startDay" )
        );      

$jsUrl->setParameter("id", "month");
$jsUrl->setParameter('month', $monthCode);
$jsUrl->setParameter('country', $countryName);
$jsUrl->setParameter('region', $regionName );

我怎样才能解决这个问题?

4

3 回答 3

2
('Côte d\'Azur')

或者

("Côte d'Azur")
于 2012-05-04T11:14:19.980 回答
2

听起来像是一份工作addslashes()

string addslashes ( string $str )

在需要在数据库查询等中引用的字符之前返回带有反斜杠的字符串。这些字符是单引号 ( ')、双引号 ( ")、反斜杠 ( \) 和NUL(NULL 字节)。

的一个示例使用addslashes()是当您将数据输入数据库时​​。例如,要将名称 O'reilly 插入数据库,您需要对其进行转义。强烈建议使用 DBMS 特定的转义函数(例如mysqli_real_escape_string()MySQL 或pg_escape_string()PostgreSQL),但如果您使用的 DBMS 没有转义函数并且 DBMS 使用 \ 来转义特殊字符,则可以使用此函数。这只是将数据放入数据库,不会插入额外的\。将 PHP 指令 magic_quotes_sybase 设置为 on 将意味着 ' 被另一个 ' 转义。

于 2012-05-04T11:14:28.577 回答
-1

您可以尝试替换'字符串中的任何\'内容,以便将它们转义,如下所示:

$regionName = str_replace("'", "\'", $regionName);
$jsUrl->setParameter('region', $regionName );
于 2012-05-04T11:16:10.733 回答