アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP5使用者です。
全角記号を半角記号に変換するにはどうすればいいのでしょうか?
現在、

mb_convert_kana($str, 'a' , 文字コード);

で変換していますが、なぜか
 !”#$%&’()*+,-./:;<=>?@[¥]^_`{|}~ 
のうち、
 ’ ” ¥ ~
は変換してくれません。
それに本来これは記号変換の関数ではありませんし…
全角記号を半角記号に変換したい場合、皆さんはどうされてますか?
よろしくお願いします。

A 回答 (2件)

まぁ小文字→大文字で変換しても、変換されないのでそういうもの


なんでしょうね。

#1さんの方法でよいと思いますが、いろいろ汎用性を考えると
配列で対比表をつくって指定してやると効率的です。
(いちおう今回はEUCをベースに変換しています、他の文字コード
の場合は適当に$org配列を修正ください)

<?
$str=<<<eof
!”#$%&’()*+,-./:;<=>?@[¥]^_`{|}~
eof;

$org=Array(
chr(hexdec("A1")).chr(hexdec("C7")) //シングルクォーテーション
,chr(hexdec("A1")).chr(hexdec("C9")) //ダブルクォーテーション
,chr(hexdec("A1")).chr(hexdec("C1"))//チルダ
,chr(hexdec("A1")).chr(hexdec("EF"))//円マーク
);
$new=Array(
chr(hexdec("27"))
,chr(hexdec("22"))
,chr(hexdec("7E"))
,chr(hexdec("5C"))
);

$str = str_replace($org,$new,$str);
$str=mb_convert_kana($str, 'a');
print $str;
?>
    • good
    • 0
この回答へのお礼

ありがとうございます。
専用の関数はないのですね。
この方法でやらせていただきます。

お礼日時:2008/10/10 00:12

適切な方法がわからなかったので、以下のようにしています。



$str = str_replace('”','"',$str);
$str = str_replace("’","'",$str);
$str = str_replace("¥","\\",$str);
    • good
    • 0
この回答へのお礼

ありがとうございます。
やはりそうするしかなさそうですね・・・

お礼日時:2008/10/10 00:04

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