
マルチバイトの文字を検索して最初に現れる文字までの数を出力させたいのですが、
例えば下記の文、「検」、「国」の場合4と8が出力されなかればならないのに12と24となって
しまいます。他にも「の」や「本」を試してみましたが全て3倍になって返ってきます。
初心者サイトを見てもプログラム自体は問題ないと思うのですがどうして本来出力されるべき数の3倍の数が返ってくるのでしょうか。
ちなみにマルチバイトではなく半角英数字をstrposで検索すると正しい数が表示されました。
マルチバイトの文字列を検索したいのですがどうしても上記のような状況になり解決できません。
どなたか理由に心当たりあるかたいますでしょうか・・。
<?php
$haystack = "日本語の文字列を検索。日本語検索。";
var_dump(mb_strpos($haystack, "文"));
var_dump(mb_strpos($haystack, "検"));
?>
結果
int(12) int(24)
$string = "日本語の文字列を検索。日本語検索。";
$abc73=mb_strpos($string, "の");
echo"$abc73";
結果 9
「の」を「本」にすると結果は3となりなります。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
まぁ環境かえないでもmb系の関数を実行するより前に
mb_internal_encoding("UTF-8");
を実行すればたいてい解決すると思います
http://php.net/manual/ja/function.mb-internal-en …
No.1
- 回答日時:
文字のエンコーディングが正しくセットされていません。
案1:/etc/php.ini に下記を書く。
mbstring.internal_encoding = UTF-8
案2:スクリプトの先頭の方で下記を書く。
ini_set("mbstring.internal_encoding","UTF-8");
案3:mb_strpos($haystack, "文",0,"UTF-8") とする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化け変換方法
-
PHPでの文字列置換について
-
SJIS→UTF-8変換後の文字化けに...
-
PPT ファイルの文字カウント=...
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
aspで作成するcsvファイルで、e...
-
C++で空Enterの入力を判...
-
PHPでCSVを出力する際のセルに...
-
メッセージボックスで1025文字...
-
JAVA Spring 改行コードを含む...
-
Excel関数「COUNTIF」で”文字”...
-
ダブルコーテーション(
-
1行ごとに取得して、その改行...
-
VBAで英数字入力チェックしたい。
-
jsp 改行コードで改行させて表...
-
エクセルのCOUNTIFが正しくカウ...
-
COBOLの改行
-
エスケープ文字の復帰(¥r)と...
-
半角スペース の文字化け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
PHPmailerでの添付ファイルの文...
-
PHP cURLでPOSTした値が文字化...
-
SQL Serverで文字コードUTF-8
-
日本語(マルチバイト)でのwor...
-
imodeメールのSubject部分の文...
-
「テキストテキスト」という文...
-
mb_eregについて
-
SJISからUTFに変換して...
-
SJISで取得した半角カナをUTF-8...
-
PostgreSQLからCSV形式でエクス...
-
PHPの文字化けについて教え...
-
PHPでのメール差出人名について
-
【PHP】日本語を実体参照符号化...
-
Shift-JISからUTF-8への変換が...
-
phpフォームで携帯へメール送信...
-
txtファイル作成の際に文字コー...
-
vodafoneが言う事ききません
-
文字コードを変換したURLを作成...
-
PHP + SQLite 文字化けについて
おすすめ情報