- - PR -
PHPでバックスラッシュを文字列としてあつかう
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-01-25 16:26
とても初歩的なことかもしれませんが、
PHP4で「¥」を文字列と「¥¥」に変換する方法がありませんか? addslashes関数をつければできるのですが 5c文字には、「¥」付加させてたくありません。 よろしくお願いします。 |
|
投稿日時: 2006-01-25 18:09
なんだかスレッド名と食い違う、見当違いのアドバイスかもしれませんが……
str_replaceなどで、¥を¥¥に置換すれば望みどおりの結果になりそうです。 |
|
投稿日時: 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; ****環境*************************** |
|
投稿日時: 2006-01-26 15:00
失礼しました。SJISですか。5c文字ならそりゃそうか……
stripslashする関数を使用しないなら、自分で5c問題を 解決するしかないと思いますよ。5c問題に引っかかる漢字が、 文字列に含まれるか、プログラム側で調べて処理しましょう。 |
|
投稿日時: 2006-01-26 15:44
日本語を処理するときは、マルチバイト関数ですね。
mb_ereg_replace は、どうでしょう? |
|
投稿日時: 2006-01-26 19:50
Lichtenstein さん おっきーさん
ありがとうございます。 結局、プログラム側で調べて処理しました。 stripslashだと5c問題で文字の組み合わせによって 違う文字になってしまいます。 また、mb_ereg_replaceは、シングルバイトのバックスラッシュの 変換はできないようです。 postgreSQLのデータをODBC経由でWindowsアプリで使用するために、 SJISで書き込む必要がありました。 色々とアドバイスをありがとうございました。 |
1