- PR -

PHPでバックスラッシュを文字列としてあつかう

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/01/25
投稿数: 3
投稿日時: 2006-01-25 16:26
とても初歩的なことかもしれませんが、

PHP4で「¥」を文字列と「¥¥」に変換する方法がありませんか?
addslashes関数をつければできるのですが
5c文字には、「¥」付加させてたくありません。
よろしくお願いします。
Lichtenstein
ベテラン
会議室デビュー日: 2003/11/06
投稿数: 61
投稿日時: 2006-01-25 18:09
なんだかスレッド名と食い違う、見当違いのアドバイスかもしれませんが……

str_replaceなどで、¥を¥¥に置換すれば望みどおりの結果になりそうです。
未記入
会議室デビュー日: 2006/01/25
投稿数: 3
投稿日時: 2006-01-26 11:07
ご回答ありがとうございます。

str_replaceを使用すると¥を¥¥に置き換え
はできるのですが、5C問題で¥が付加されてしまいます。

具体的には、
PHPからPostgreSQLのデータベースに書き込みを行いたいのですが、

$DAT = "発表";
$STR = str_replace("¥¥","¥¥¥¥",$DAT);

上記の方法は、5C問題で、
$STR = "発表¥";
になります。

下記のSQL文を実行すると
$SQL="UPDATE TABLE SET A ='発表¥'"; 
当然エラーになってしまいます。

$DAT = "発表A";
にした場合は、
$SQL=UPDATE TABLE SET A ='発表¥A';
でエラーになりません。

なにか良い対処方法がございましたら
ご教授頂けると助かります。
よろしくお願いします。


****環境***************************
PHP 4.2.3
postgresql 7.2.2-8

php.iniの設定
magic_quotes_gpc = Off
[mbstring]
mbstring.internal_encoding = SJIS
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.detect_order = auto
mbstring.substitute_character = none;
****環境***************************
Lichtenstein
ベテラン
会議室デビュー日: 2003/11/06
投稿数: 61
投稿日時: 2006-01-26 15:00
失礼しました。SJISですか。5c文字ならそりゃそうか……

stripslashする関数を使用しないなら、自分で5c問題を
解決するしかないと思いますよ。5c問題に引っかかる漢字が、
文字列に含まれるか、プログラム側で調べて処理しましょう。
おっきー
大ベテラン
会議室デビュー日: 2003/05/01
投稿数: 104
投稿日時: 2006-01-26 15:44
日本語を処理するときは、マルチバイト関数ですね。
mb_ereg_replace は、どうでしょう?
未記入
会議室デビュー日: 2006/01/25
投稿数: 3
投稿日時: 2006-01-26 19:50
Lichtenstein さん おっきーさん
ありがとうございます。

結局、プログラム側で調べて処理しました。
stripslashだと5c問題で文字の組み合わせによって
違う文字になってしまいます。
また、mb_ereg_replaceは、シングルバイトのバックスラッシュの
変換はできないようです。

postgreSQLのデータをODBC経由でWindowsアプリで使用するために、
SJISで書き込む必要がありました。


色々とアドバイスをありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)