プロが教えるわが家の防犯対策術!

PHP初心者です。
バージョンは4.4.4 ファーストサーバ 文字コードはUTF-8 です。
マルチバイト文字の中の半角「\」をそれ以外の文字に変換したいのですがどうすればできるでしょうか?

(1)$str = mb_ereg_replace("\\", '¥', $str);
(2)$str = preg_replace("\\", '¥', $str);

(1)も(2)もエラーとなり変換できません。
お詳しい方、よろしくお願いいたします。

A 回答 (4件)

リテラル文字列内で\を文字として認識させる為に\を重ねて


さらに正規表現で\をメタ文字の打ち消しではなく文字として認識させる為に・・・\\\\
上手く説明できなくてすいません。

とりあえず↓でいけると思います。
(1)$str = mb_ereg_replace("\\\\", '¥', $str);
(2)preg_replace("@\\\\@", '¥', $str);
    • good
    • 0
この回答へのお礼

なるほど!
\ 4連発の理由がわかりませんがしっかり置換してくれてます。
(2)は
$str = preg_replace("/\\\\/", '¥', $str);
ですよね…?

どうもありがとうございました。

お礼日時:2007/06/09 02:36

UTF-8やEUC-JPではマルチバイト文字にASCII文字(0x00-0x7F)が使われることはないので単純な検索や置換などはマルチバイト関数を使わなくても可能です。


Shift_JISの場合は”表”や”能”など文字コードに"\"(0x5C)を含むものがあるので出来ません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
マルチバイト関数不要とは!
しかし、「単純」でない場合とはどの程度なのでしょうか?
なにか例を教えていただけると助かります。
よろしくお願いいたします。

(PHPを書くときはいつも文字コードがらみの問題で頭を痛めています。なんともややこしい…)

お礼日時:2007/06/09 09:12

単純に



$str=str_replace('\\','¥',$str);

でよいのでは?
    • good
    • 0
この回答へのお礼

ありがとうございます。
$str にどんな文字列が入っても大丈夫なんでしょうか?

お礼日時:2007/06/09 09:13

UTF-8なら


$str = str_replace('\', '¥', $str);
でも大丈夫でしょう。
    • good
    • 0
この回答へのお礼

え!?
UTF-8なら2バイト文字でも未対応関数でOKなのでしょうか?
あと、UTF-8じゃないときはどうなんでしょう?

お礼日時:2007/06/09 02:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!