質問があります。
1バイト文字が来ても2バイト文字が来ても
表示時に視覚的に同じ長さを返す関数が作りたいのですがうまくいきません。
$str1 = "あああaあ";
$str2 ="aaaaaaaaa";
function hoge($str)
{
return mb_substr($str, 0, 5);
}
これだと表示した場合に
あああaあ
aaaaa
となってしまいます。
mb_substrをsubstrにすると2バイト文字の途中をsubstrで指定してしまうと文字化けしてしまいます。
何かうまい回避方法はないでしょうか?
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
>何かうまい回避方法はないでしょうか?
補足が必要です。
「ああ」と表示したいのですか?
「あああ」と表示したいのですか?
「ああx」(xに任意の文字を指定)としたいのですか?
この回答への補足
失礼しました。
以下のように訂正させていただきます。
$str1 = "あああaあいいいいいい";
$str2 ="aaaaaaaaaabbbbbbbbbbb";
表示文字バイト数:10
表示結果
あああaあ
aaaaaaaaaa
No.2
- 回答日時:
なんかすごく簡単な方法があるような気がしますが、ぱっとおもいつかない
ので、以下のような方法でどうでしょうか?
<?PHP
$str1 = "あああaあいいいいいい";
print left($str1,10)."<br>";
$str2 ="aaaaaaaaaabbbbbbbbbbb";
print left($str2,10)."<br>";
function left($str,$len){
if(strlen($str)<=$len) return $str;
$str=substr($str,0,$len+1);
$str=mb_substr($str,0,mb_strlen($str,"EUC-JP")-1,"EUC-JP");
return $str;
}
?>
ありがとうございました。
参考にして考えてみました。
こんなのはどうでしょうか?
function hoge($str, $len, $foot = '')
{
$x;
$ret = '';
if( strlen($str) <= $len )
{
return $str;
}
for($x = 0; $x < mb_strlen($str); $x++)
{
$ret.= mb_substr($str, $x, 1);
if( $len <= strlen($ret) )
{
break;
}
}
$ret.= $foot;
return $ret;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlについての質問 2 2022/10/17 15:25
- PHP substrの使い方について教えて下さい。 4 2023/02/17 15:59
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- UNIX・Linux Postfixでドコモメールに送信すると届くまで10分ぐらいかかる 6 2023/03/05 13:56
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UTF8メールがLotus Notesで文字...
-
メールのCCに複数のアドレスを...
-
PHP mb_convert_encoding sjis...
-
文字化け変換方法
-
廣のjis変換で文字化け
-
sjisで書いているPHPとeucのM...
-
よく、書式で出てくる ○○ ( ○○,...
-
10文字以降は非表示にしたいん...
-
送信したメールのタイトルが無...
-
PHP・MySQLでデータベースを作...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
テキストファイルから改行コー...
-
エスケープ文字の復帰(¥r)と...
-
文字の入力で横バー上段、中断...
-
グレープシティのSPREAD...
-
エクセルのCOUNTIFが正しくカウ...
-
jsp 改行コードで改行させて表...
-
ExcelVBAでメールを作成してメ...
-
C++で空Enterの入力を判...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
phpのメールフォームの完了画面...
-
SQL Serverで文字コードUTF-8
-
PHPmailerでの添付ファイルの文...
-
SJISで取得した半角カナをUTF-8...
-
mb_convert_encoding で 一部の...
-
SJIS→UTF-8変換後の文字化けに...
-
PHP cURLでPOSTした値が文字化...
-
phpMyAdmin内での文字化け
-
mb_ereg_replaceに関して
-
RSSを取得すると文字化けする。
-
PostgreSQLからCSV形式でエクス...
-
【PHP】mb_convert_encoding...
-
mb_regex_encodingでエンコード...
-
postの文字化け防止について
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
UTF8メールがLotus Notesで文字...
-
mail()で送信したメールのタイ...
-
php自動返信メール本文の一部の...
-
phpでの文字エンコード
おすすめ情報