• ベストアンサー

PHPで文字列の一部を省略する時に発生する文字化けについて

PHPについてです。 日本語と英数字を含む不規則な50字程度の文章の一部を表示したいと考えています。 具体的には「○○○○○○○○○○○○...」のような形で途中で「...」で省略をしたいと思います。 全て英数字だとsubstr_replaceを使って桁指定して問題なくできますが、 日本語も含む場合に省略前後が文字化けしてしまう場合もあります。 日本語はマルチバイトなのでこうなると思うのですが回避方法が思いつきません。 これを回避する方法を知っている方がいましたらどうかご教授ください。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

mb_strimwidth() ではだめ?

juna_voyage
質問者

お礼

この関数を見逃していました。 お手数かけました。 ありがとうございます。

関連するQ&A

  • 文字列の一部を取り出したいのですが、文字化けしてしまいます。

    文字列の一部を取り出したいのですが、文字化けしてしまいます。 コードは以下のとおりです。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> <body> <?php $str = "日本語日本語UTF-8"; print mb_substr($str, 0, 3); ?> </body> </html> おそらく2バイト文字の途中で切っているので文字化けするのだと思いますが、 対象方法が分かりません。 ご存知の方がいらっしゃいましたら、すみませんが教えてください。

    • ベストアンサー
    • PHP
  • 文字化け

    PHPを最近勉強し始めたのですが、どうしても文字化けしてしまう箇所があり質問させていただきました。 海外から購入したスクリプトを日本語化しようとしているのですが、エンコード方式が違う?ため、文字化けするようです。(.phpファイルの文字コードはEUC-JPで統一しています) function encode_s($s) { $s = rawurlencode($s); $s = str_replace('%26','&',$s); $s = preg_replace('/%([\dABCDEF]{2})/e', "'&#'.hexdec('\\1').';'",$s); return $s; } マルチバイト関数等を勉強中ですが現状ではわからないです。 どなたかご指摘お願いします。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpのソースによって、文字化けしてしまいます

    お世話になっております。 PHPとMySQLを利用しております。php.iniでPHP 、my.cnfでMySQL、それぞれの文字コードを「日本語EUC」に設定し、問題なく動作しております。 ただ、PHPスクリプトのソースコードが日本語EUCでない場合、出力結果が???????のように文字化けしてしまいます。 PHPスクリプトのソースの文字コードが、日本語EUCであっても、シフトJISであっても文字化けしないようにするには、どのように設定したらよいでしょうか。 初心者であり、困っております。 どなたか、お助けいただくことはできますでしょうか。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでCSV出力時の文字化け(一部)

    PHPのfputsを使用してOracleから抽出したデータを CSVに書き出しているのですがなぜか一部のカナと漢字が 文字化けしていました。 全ての日本語が文字化けしているのでしたら文字コードの 変換が間違っていると思うのですが一部だけ(普通のカナと漢字) なので原因がわかりませんでした。 どなたかお助け下さい。 ・環境 PHP5 Oracle10g

    • ベストアンサー
    • PHP
  • Hotmailで文字化け

    お忙しいところ済みません。中国にいる日本人の友人からメールがきましたが、件名も内容も全て化け字でした。友人が使っているPC環境は: 1、日本語も中国語も入力できる 2、WebメールのHotmailを使った 3、OSは日本語だと思いますが、もしかして中国語(?) 私のPC環境は一般の日本語Windows2000です。 メールは日本語のはずです。日本語(ShiftJIS、EUC)、中国語(Big5、GB、HZ)、Unicode(UTF-8)など、持ってるエンコード方法で全部試してみましたが、どれも化け字でした。 友人からいつもメールきてますが、大丈夫の時もあって、化け字の時もあります。特に設置など変えてないと思いますが、こういう不安定さの原因は何でしょうか。 どういう仕組みで化け字になるのかも分かりませんので、簡単に教えていただきたいと思います。また対処方法もお願い致します。

  • 文字列カットでの文字化けについて

    文字列のカットなのですが、 mb_substrを使っても最後が文字化けするので、 エンコーディング名を追加したら文字列がカットされなくなってしまいました。 以下のファイル http://www.hp-toolbox.com/rssup.zip に含まれるrssup.phpの 44行目 if (mb_strlen($title,"SJIS") > 46) { 45行目 $title = mb_substr($title,0,46,"SJIS"); $title .= "..."; 46行目 } です。 どなたか上手くいく方法を教えて下さい。 宜しくお願い致します。

    • 締切済み
    • PHP
  • 文字列分割方法

    フォームから入力されたデーターを文字数により4分割したい場合、 シングルバイトとマルチバイト文字列が混在していると、文字化けが起こってしまいます。 私が考えた方法は <?php $test="あああああいいいいいうううううえええええ"; $length = strlen($test); $length2 = (int)$length/4 $quarter[] = substr($test,0,$length2); $quarter[] = substr($test,$length2,$length2); $quarter[] = substr($test,$length2*2,$length2); $quarter[] = substr($test,$length2*3,$length2); echo $quarter[0]."<BR><BR>"; echo $quarter[1]."<BR><BR>"; echo $quarter[2]."<BR><BR>"; echo $quarter[3]."<BR><BR>"; ?> というものだったんですが、この場合$testに半角文字のaなどが入ると 文字化けしてしまいます。 上手く、マルチバイト・シングルバイト複合文字列を文字数により4分割する方法はないでしょうか? ご教授ください

    • ベストアンサー
    • PHP
  • 【PHP】常にマルチバイト文字列関数でいいですか?

    PHP初心者です。バージョンは4です。 文字を扱う関数はマルチバイト対応と非対応があるみたいですがその使い分けがわかりません。いっそ常にマルチバイト対応にしとけばいいのではと考えてしまいますがどうなのでしょう?たとえば、置換の場合、 preg_replace と str_replace がありますが、常に preg_replace を使っていて問題はないのでしょうか? お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • eclipseの文字化けとPHPの日本語設定

    ●質問の主旨 eclipseが文字化けして困っています。 関連質問 eclipseの文字化けについて(PHPファイル) http://okwave.jp/qa/q8068188.html 「eclipse」「文字化け」でググってみて、 上位5~6番目に表示される方法を試してみましたが、 どれも効果が上がらず、依然日本語が文字化けしたままです。 ひょっとしたら、eclipseの文字化けを直そうと思ったら、 PHPの日本語設定変更しないといけないのでしょうか? もしその場合、変更するのは、下記のサイトに従って やるのが良いのでしょうか?それとも何か他の方法があるのでしょうか? 日本語利用の為の設定 http://www.phpbook.jp/install/phpini/index5.html ご存知の方、よろしくお願いします。 ●質問の補足 なお、eclipseを通してUPしたPHPファイルは文字化けを起こしますが、 xammp直下にあるhtdocsにおいてUpしたファイルは文字化けを起こしません。 ●開発環境 windows1.8.1 xammp1.8.1

    • ベストアンサー
    • PHP
  • PHPの文字化け

    PHPでチャットを作っているのですが、どうしても、文字化けを起こしてしまいます。 文字化けを起こす場所は、入室するときの名前と、ログを読み出すときです。 それ以外は正常に動作しているように見えます。 文字化けする文字は、日本語だけで、アルファベットは問題ありません。 「テスト」と入力するとFirefoxでは「???鴻??」といった用になって、IEでは「・・"鴻ヨ」というように文字化けの仕方が違うようです。 文字コードはEUCです。 サーバーはwindowsでローカルサーバーを立てています。 サーバーの設定の問題でしょうか? アドバイスをよろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう