[PHP-users 24023] Re: 表\ の処理
Satto
satoru_kumagai @ mjs.co.jp
2004年 12月 29日 (水) 09:29:49 JST
平松様 ありがとうございます.
> magic_quotes_gpc = On
に変更し,Apache再起動しましたが,状況変わらずでした.
今回ソースを一部変更し,変数に,どの時点でどの値がセット
されているのかを調べていました.
データベースのデータは「表」としてあります.
<?php
require_once('dbconnect.inc');
$con = new connect;
$str = "select * from hoge where hoge_id=1";
$rs = $con->rtn_rs($str);
$row = mssql_fetch_array($rs);
$title1 = $row["title"]; //表がセット
$title2 = htmlspecialchars($title1,ENT_QUOTES); //表がセット
$title3 = ereg_replace("\\\\","\\\\",$title2); //表\ がセット
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>HOGE</TITLE>
<script language="javascript" type="text/javascript">
function hoge(){
alert('<?php echo($title3)?>');
// alert('表\\\'); となり,エラー
}
</script>
</HEAD>
<BODY onload="hoge()">
test
</BODY>
</HTML>
以上のソースでテストした結果は以下です.
$title1 = '表'
$title2 = '表'
$title3 = '表\'
何故 ereg_replace("\\\\","\\\\",$title2); をすることにより
勝手に '表\' になってしまうのかが理解できません.
以前のMLでも話題に出ていた 0x5c の関係でしょうか.
この結果を考えれば
データが「\」の場合は \\ になり,
データが「表\」の場合は 表\\\ になってしまうことも理解できますが,
解決策はまったくわかりません.
javascritp側でどうにかし様にも,javascriptの変数にセットする時点で
エラーになりますし・・・?
PHP-users メーリングリストの案内