字符串中出現單引號雙引號或括號時如何處理

Cervisia 2007-08-14 02:23:31
代碼如下:
echo("sel.options[$i]=new Option('$str','$str');");
其中$str可能包含雙引號、單引號或者其它特殊的符號,應該如何處理?
...全文
283 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2007-08-14
  • 打赏
  • 举报
回复
转义
$str = addslashes($str);
echo("sel.options[$i]=new Option('$str','$str');");
Cervisia 2007-08-14
  • 打赏
  • 举报
回复
對不起,不喜歡用隱藏值來實現,一定有其它辦法的,目前仍在嘗試中,不過進度有點兒慢。在網上找到了這樣一段代碼可能對我很是有幫助:
function escape($str) {
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(ord($v[0]) < 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
}
return join("",$ar);
}

function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
}
hbhbhbhbhb1021 2007-08-14
  • 打赏
  • 举报
回复
sorry,要写成这样,不过里面不能包括HTML标签,这里的情况是下拉框应该也不会有吧
<textarea name="aaa" style="display:none">把值打在这里</textarea>
<script language=javascript>
var str=document.getElementById("aaa").value
document.getElementById("cats").options.add(new Option(str,str));
</script>
hbhbhbhbhb1021 2007-08-14
  • 打赏
  • 举报
回复
看需求由于这里的值应该没有回车之类的,可以写到hidden里
<input name="aaa" type="hidden" value="把值打在这里">
<script language=javascript>
var str=document.getElementById("aaa").value
document.getElementById("cats").options.add(new Option(str,str));
</script>
Cervisia 2007-08-14
  • 打赏
  • 举报
回复
var s=escape("tuo"la");
若是出現雙引號還是一樣會出錯。
yixianggao 2007-08-14
  • 打赏
  • 举报
回复

<body>
<select id="cats" size="1">
<option value="1">calico</option>
<option value="2">tortie</option>
<option value="3" selected>siamese</option>
</select>

<script type="text/javascript">
<!--
// 编码,此步骤应该在 server 端处理。
var s = escape("tuo'la");
alert(s);
document.getElementById("cats").options.add(new Option(unescape(s)));
//-->
</script>
</body>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧