• 締切済み

マルチバイトでsubstr_replace

$comment = "全角hannkaku全角"; $comment = substr_replace($comment, "全角", 2,8); //上記を簡潔に実現するにはどうしたらよいでしょうか?

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

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

この命題はどういうどういうプロセスで、どういう結果になることを 期待していますか?

関連するQ&A

  • MysqlのREPLACEについて教えてください。

    update `dtb_products` SET `main_comment` =REPLACE(main_comment ,"http://user_data","/user_data") と言うクエリを実行したところ、対象が0件となるのですが、 何か使い方間違ってますか?

    • ベストアンサー
    • MySQL
  • PHPのpreg_replaceについて

    文字列に半角、全角があったら''に置換したいです。 例)あ あ あ -> あああ 上記のように。 ソースは下記のとおりしてみたのですがうまく表示されませんでした。 $string = 'あ あ あ'; $pattern = '[ \t\n\r\f]'; $replacement = ''; $var_dump(preg_replace($pattern,$replacement, $string)); 他には $string = 'あ あ あ'; $pattern = '[[:space:]]'; $replacement = ''; $var_dump(preg_replace($pattern,$replacement, $string)); などと行ってみました。 ご教授お願いいたします。

    • 締切済み
    • PHP
  • csv内の改行を削除

    フォームから送られてきた文章の 改行を<br />へ変換したいのですが、 $comment_a = ereg_replace("\n","<br />",$comment); としても a<br /> b<br /> c となってしまいます。 a<br />b<br />c としたいのですが、どうしたらよいのでしょうか。 $comment_b = str_replace("\n", "", $comment_a); を追記したのですが、うまくいきませんでした。

    • ベストアンサー
    • PHP
  • substrで抜き取った全角文字列を正常に表示

    $moji1 = 'あいうえおかきくけこさしすせそ'; $moji2 = 'あいうえお...かきくけこ'; $moji3 = 'なにぬねの'; 上記のような3つの文字列を格納した変数があります。 それぞれの変数を使いリンクを貼りたいのですが、20バイトを超えた変数に対しては、substrで20バイトまでを表示し、リンクするようにします。 以下は$moji1をリンクにするソースです。 $byte = strlen($moji1); if ($byte > 20) {  $moji1 = substr($moji1,0,20); } echo '<a href="#">'.$moji1.'</a>'; moji2、moji3も全く同じ処理をします。 結果はmoji1、moji3は上手くいくのですが、moji2に関しては <a href="#">あいうえお...かき/a> このように</a>の'<'が消えてしまいます。 恐らく、20バイト目が全角で、表示が上手くいっていないのだと思うのですが、対処法がわかりません。 今は全角に変換してごまかしていますが、半角のものはなるべく半角で表示したいのです。 moji2を正常に表示させるには、どのような書き方をすれば良いのでしょうか。 アドバイスお願いします。

    • ベストアンサー
    • PHP
  • マルチバイト文字の大文字、小文字を区別せずに置換

    ある文章に対して、フォームから入力された文字の部分の色を変えて表示するという事をしたいです。 フォームから入力された文字列が[php]として、 php、PHP、Php、phP、php、PHP、Php…など、全角、半角、大文字、小文字関係なく色を変えたい場合、 半角の文字列はeregi_replace()でできると思うのですが、全角の場合はどのように記述すれば良いのでしょうか。 フォームから入力された文字列を全角に変換してmb_eregi_replace()を行ってみたのですが、うまくいきませんでした。 文章を半角に変換すればできるとは思いますが、出来る限りそれはしたくありません。 特に一つの関数で…という事は考えていません。 何か良い方法がありましたらアドバイスをお願い致します。

    • ベストアンサー
    • PHP
  • substrでutf8の日本語文字を先頭から10文字取り出す

    現在utf8で掲示板を作成しています。 エントリーの先頭10文字程度を取り出したいのですが、 substrではうまくいきません。 どなたか経験のある方教えてください。 $word="あいaaうえbお\nかきa1aくけこ\abcdeft"; という半角と全角が混在したデータがあり、 半角全角にかかわらず先頭から10文字を取り出したいのですが、 substr($word,0,10);とやっても、 日本語が含まれているためうまくいきません。 shiftjisへ変換してから処理する方法は見つけたのですが、 データが多くオーバーヘッドがかかるので、 utf8のままハンドリングしたいと思っています。 どなたか経験のあるかた教えてください。

    • ベストアンサー
    • Perl
  • substr で全角半角混在の文字列を抜くには…

    全角と半角の混ざった文字列で下のようにすると、1byte文字が混ざったときの最後の1文字が文字化けします。 $kensaku = substr($namae, 0, 10); 原因は分かったので色々なサイトを調べたのですが、頭がついてきません… 全角だけのときは10byte 半角が奇数混じったときは11byte 半角が偶数混じったときは10byte を$kensaku に渡すには どの様な記述をすればいいのでしょうか? 既出の質問で申し訳ございませんが、どうぞ宜しくお願い致します。

    • ベストアンサー
    • Perl
  • $dateA = substr($filelist[$_][0], 1

    $dateA = substr($filelist[$_][0], 11, 8) * "1.6"; 現状、CGIに上記の処理をしてdataAで取得した数値に1.6の数字を掛け算しています。 この掛け算を取得した数値が10以下の場合は適用しない為にイフブンを設定したいのですが、 その記述方法が分かりません。詳しい方おられましたらお教えいただけませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • エスケープ文字にstr_replaceが効かない

    フォームで送信された文字列のうち、str_replace関数を使って半角記号を全角記号に置換したいのですが、一部のエスケープ文字が含まれている文字列の置換が上手くいきません。 ソースは以下に記しますが、現状では、"(ダブルクォート)は\&quot;、&(半角アンド)は&amp;と置換されてしまいます。 この場合であれば、”(全角ダブルクォート),&(全角アンド)と出力させたいのですが・・・ どなたかお気づきの点ありましたらご教示宜しくお願いします! ===============ソースコード================================= <?php $system = ""; if (isset($_POST["submit"])) { $system = htmlspecialchars($_POST["system"], ENT_QUOTES); $system = mb_convert_encoding($system, "EUC-JP", "SJIS"); $system = str_replace('&', '&', $system); $system = str_replace('"', '”', $system); $system = str_replace('あ', '”', $system); $_SESSION["system"] = $system; } $str = <<<STRING <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <form method="post" action="{$SERVER['PHP_SELF']}" enctype="multipart/form-data" > <textarea name="system" cols=40 rows=5 wrap=soft>{$system}</textarea> <input type="submit" name="submit" value="送信"> </form> ----------------------------------------------------------<br> {$_SESSION["system"]} </body> </html> STRING; $str = mb_convert_encoding($str, "SJIS", "EUC-JP"); echo $str; ?> ============================================================ ちなみに、『あ』→『”(全角ダブルクォート)』と、正しく置換されます。

    • ベストアンサー
    • PHP
  • mysqlの関数でereg_replace

    レコードから、特定のドメインを含むURLを消去する、といった動作をmysqlの関数で実現しようと考えてます。phpで言うところのereg_replace()のような関数がmysqlであるかどうかということです。 以下のように"bbs"というテーブルの"com"というフィールドからURLに値する文字列を消去するSQL分を実行しましたがこれは動作しませんでした。 update bbs set com = replace(com,regexp '(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)','') where com regexp '(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)'; replace関数の第二引数にregexpを使用することができませんでした。(やり方が間違ってるのでしょうか?) phpのereg_replaceを使用してフィールド"com"に含まれるURLを消去していくというやり方で実現は可能なのですが、動作の軽さやソースのシンプルさを考え、SQL文で実現することを考えてます。 mysqlのヴァージョンは3.23.58です。 よろしくお願いいたします。m(__)m