人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

登録フォームで情報を登録、メール配信するシステムをPHPで作っているのですが、フランス語などのアクセント記号付文字を登録すると文字化けしてしまいます。出来れば登録処理の段階でアクセント無しの文字に自動的に置換するようにしたいのですが、コード上はどのように記述すればよいでしょうか?

●質問者: tecra
●カテゴリ:コンピュータ インターネット
✍キーワード:PHP アクセント コード システム フランス語
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tobeoscontinue

>文字化けしてしまいます。

文字コードとしてjis,sjis,euc-jpなどが使われていると思います。これらのコードにはアクセント文字はありませんので文字化けは避けられません。

utf-8にすることでアクセント文字を識別できるのですが。

function ascii_replace($message)
{
 $from = array("?","?","?","?","?","?","?","?","?","?","?","?","?","?",
 "?","?","?","?","?","?","?","?","?","?","?","?","?");
 $to = array("E","A","E","U","A","E","I","O","U","E","I","U","C","OE",
 "a","e","u","a","a","i","o","u","e","i","u","c","oe");
 return str_replace($from, $to, $message);
}

utf-8であればstr_replace()を使って$fromから$toのように置換できます。しかし$from,$toに記述しないアクセント文字は置換されませんし、utf-8であればアクセント文字は文字化けしませんので置換する必要が無いんですよねぇ。(^^)


function cut_accent_grave($message)
{
 preg_match_all("/[A-Za-z0-9\s]+/", $message, $match);
 return implode($match[0]);
}

逆に英数字以外削除してしまうのであれば簡単ですが、今度は漢字さえも削除してしまうのが難点です。どちらも使えませんねぇ。もっと対象を絞ってもらったらもう少しまともな対策がとれるかもしれません。

utf-8なら後々楽なんですけどね。

http://q.hatena.ne.jp/ ダミー

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ