![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
PHPでフリーの掲示板を制作中です。
目立たせようとする記号を削除しましたがうまく動きません。
$html = mb_ereg_replace('△', '', 'あああ△あああ');
・希望結果 ああああああ
・実際の結果 ああ
文字コードは全て EUC-JP です。
また以下を追加するとエラーがでました。
$str="あああ△あああ";
$str = mb_convert_encoding($str, 'EUC-JP', 'auto');
・エラー
Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding in
そもそもmb_convert_encodingを使わない方が良いのか使い方が悪いのかも解りませんがアドバイスお願いします。
No.2ベストアンサー
- 回答日時:
正規表現用の文字コードは指定されていますか?
これをEUC-JPに設定しておかないと正しく動作しないでしょう。
php.iniなどでmbstring.internal_encodingの値をEUC-JPにするか、mb_regex_encoding関数でEUC-JPを指定してみてください。
http://jp2.php.net/manual/ja/function.mb-regex-e …
http://jp2.php.net/manual/ja/function.mb-ereg-re …
下記でうまくいきました。
助かりました。
mb_regex_encoding( "EUC-JP" );
$html .= mb_ereg_replace('△', '', 'あああ△あああ');// 文字化け
No.5
- 回答日時:
No.4です。
No.3のSortaNerdさんと同じになってしまいました。それで、
$html = str_replace("(?<!\xA4)△", '', 'あああ△あああ'); なんていう場合は実際にはあまり出現しないと思いますが、preg_replaceを使えばOKだと思いますよ。
$html = preg_replace("/(?<!\xA4)△/","","あああ△あああ");
これも無事に動きました。有り難うございました。
実際には使用者が自由に追加できるようにしたいので、色々試してみたいと思います。
有り難うございました。
No.4
- 回答日時:
$html = mb_ereg_replace('△', '', 'あああ△あああ'); でも
$html = str_replace('△', '', 'あああ△あああ'); でも
EUCでなければ(SJISかUTF8なら)うまくいきます。
というのは、
△ は \xA2\xA4
あ は \xA4\xA2
ですから、
\xA4【\xA2\xA4\xA2\xA4】\xA2【\xA2\xA4】\xA4【\xA2\xA4\xA2\xA4】\xA2 のように、
「あ」の2バイト目と、次の「あ」の1バイト目が \xA2\xA4 ですからマッチしてしまい、【 】のところが削除され、「あ」が2字残るわけです。
No.3
- 回答日時:
phpには詳しくないのですが、とりあえず文字コードの問題であるのは確かなようです。
EUC-JPでは
△ → A2 A4
あ → A4 A2
というコードですので、
あああ△あああ
→ A4 A2 A4 A2 A4 A2 A2 A4 A4 A2 A4 A2 A4 A2
→ A4 (A2 A4) (A2 A4) A2 (A2 A4) A4 (A2 A4) (A2 A4) A2
→ A4 A2 A4 A2
→ ああ
となっているようです。
状況から見るに、文字コードがShift_JISと判断されているように思います。
Shift_JISではA2は半角"「"、A4は半角"、"とそれぞれ1バイト文字に割り当てられていますので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- CPU・メモリ・マザーボード 「コンピューターのメモリが不足しています」 5 2022/12/15 10:10
- CPU・メモリ・マザーボード 「コンピューターのメモリが不足しています」 3 2022/12/15 22:07
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- フリーソフト 通信量を計測するソフトを探してます 1 2022/08/18 14:39
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化け変換方法
-
SelectedIndexChanged
-
mail()で送信したメールのタイ...
-
メールのCCに複数のアドレスを...
-
PHPでの文字列置換について
-
携帯で保存すると文字化け
-
SJIS→UTF-8変換後の文字化けに...
-
UTF8メールがLotus Notesで文字...
-
Warning: mb_strpos(): Unknown...
-
SQL Serverで文字コードUTF-8
-
COBOLの改行
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
JavaDoc コメントの改行について
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
-
最終行の改行について
-
文字の入力で横バー上段、中断...
-
コンボボックスの項目中に改行を
-
jsp 改行コードで改行させて表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
phpのメールフォームの完了画面...
-
SQL Serverで文字コードUTF-8
-
UTF8メールがLotus Notesで文字...
-
SJISで取得した半角カナをUTF-8...
-
mail()で送信したメールのタイ...
-
RSSを取得すると文字化けする。
-
includeファイルの文字コードに...
-
phpフォームで携帯へメール送信...
-
PHP+Postgres 「髙」が文字化け
-
廣のjis変換で文字化け
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
PostgreSQLからCSV形式でエクス...
-
メールのCCに複数のアドレスを...
-
PHPmailerでの添付ファイルの文...
-
ASCII文字列をEUCなどに変換し...
-
mb_convert_encoding で 一部の...
-
SJIS→UTF-8変換後の文字化けに...
-
CGIを作っています。渡されて来...
-
mb_ereg_replace での文字変換
おすすめ情報