9

[php]文字列の各文字の間に別の文字列を挿入するスクリプト

Tag: phpuechoco @ 00 : 05 : 04

文章を書いていた時に、たまたま「1と2と3と5と6」と言う文字列を順番どおりに書いて、入力切り替えのかったるさを実感しました。ふと考えてみると。「12356」を先に書いてから、あとから間に「と」を入れてくれるとスマートな気がして、でもphpでどうやって書くんだろうっていう、変な妄想にふけりました。

妄想の結果:

php:
  1. $insert = 'と';
  2. $str = '12356';
  3.  
  4. $len = strlen($str);
  5. for ($i = 0; $i <$len; $i++) {
  6.     echo ($i> 0) ? $insert . $str[$i] : $str[$i];
  7. }

もう少し、スマートに書けるんじゃないかと思ったけど、これで満足・・・・と思いきや、$strがマルチバイトだと動かなそうな気がした。で、第2版がこちら

php:
  1. $insert = 'to';
  2. $str = 'あいうえお';
  3.  
  4. mb_internal_encoding('UTF-8'); // 環境に合わせて
  5. $len = mb_strlen($str);
  6. for ($i = 0; $i <$len; $i++) {
  7.     echo (($i> 0) ? $insert : '') . mb_substr($str, $i, 1);
  8. }

まーこれでいいかなぁー。自分の要望は満たしてるし。でもphpならもっとスマートにできる関数があると思うんだけどな。

2 Responses to “[php]文字列の各文字の間に別の文字列を挿入するスクリプト”

  1. かつら says:

    ごぶさたでーす。

    implode($insert, preg_split(’//u’, $str, -1, PREG_SPLIT_NO_EMPTY));

    でいけるかと思います。
    まー可読性的にも問題ない範囲じゃないでしょうか・・・
    ご参考まで!

  2. uechoco says:

    >かつらさん
    お久しぶりですw

    こういうスマートな技を求めてましたww

    preg_splitは初めて知りました!マニュアル見たら、文字要素に分割するサンプルが載ってましたね^^

Leave a Reply