[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 メーリングリストの案内