我有一个javascript函数被破坏,因为'('Côted'Azur')没有被转义:
Javascript:searchDay('month','France','Côted'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 );
我该如何解决这个问题?
答案 0 :(得分:2)
('Côte d\'Azur')
或
("Côte d'Azur")
答案 1 :(得分:2)
听起来像是addslashes()
的工作。
string addslashes ( string $str )
在需要的字符之前返回带反斜杠的字符串 在数据库查询等中引用。这些字符是单引号(
'
), 双引号("
),反斜杠(\
)和NUL
(空字节)。
addslashes()
的示例用法是将数据输入到 数据库。例如,要将名称O'reilly插入数据库, 你需要逃脱它。强烈建议使用DBMS 特定的转义函数(例如MySQL的mysqli_real_escape_string()
或者pg_escape_string()
用于PostgreSQL),但是如果您使用的是DBMS 没有转义函数,DBMS使用\来转义特殊 字符,你可以使用这个功能。这只是获取数据 进入数据库,不会插入额外的\。有PHP 指令magic_quotes_sybase设置为on将意味着'而是转义 与另一个'。
答案 2 :(得分:-1)
您可以尝试使用'
替换字符串中的任何\'
,以便按以下方式转义它们:
$regionName = str_replace("'", "\'", $regionName);
$jsUrl->setParameter('region', $regionName );