• ベストアンサー

文字の挿入

こんにちは テキストエリアに好きな言葉をガンガン書いていってPOSTした データに例えば3行ごとに特定の文字を挿入する というような ことは果たして出来るのでしょうか? あいうえお かきくけこ さしすせそ 特定の文字ですよ たちつてと … ↑のような感じのことです 正規表現を使えばなんとかなるものなのか、実現不可能なのか どうにも判断出来ないので宜しかったら教えて頂けますか??

  • PHP
  • 回答数3
  • ありがとう数6

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

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

書いてから気がついたんですが $str=preg_replace("/(.*\n){3}/","$0hoge\n",$str); で十分でしたね。 で$0とはパターンにマッチした文字列のことです。 この場合は何かの文字+改行が3回繰り返される文字列です

koke29
質問者

お礼

yambejp様 更にシンプルな回答ありがとうございます! 正規表現って今のところ避けて通っている部分なのですが 使いこなせたら、かぁなり便利ですねぇ 勉強した方が絶対いいなーって今回思いました $0 の件も教えて頂いて本当にありがたいです こんなのあるんですねぇ 知らないことばっかりですよ ホントにありがとうございました!!

その他の回答 (2)

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

特殊な条件がなければ以下のような形でよいのでは? <? $str=<<<eof あいうえお かきくけこ さしすせそ たちつてと なにぬねの はひふへほ まみむめも eof; $str=preg_replace("/.*\n.*\n.*\n/","$0hoge\n",$str); print nl2br($str); ?>

koke29
質問者

お礼

yambejp様 いつもありがとうございます サンプルの動作 バッチリでした! $0hoge\n ここのところの $0 っていうのは何なんですか? ちょっと調べてみましたが わかりませんでした これが無いと このサンプルは欲しい動きをしない っていうのは試してみてわかったんですが 初めて見たもので…良かったら 教えて下さい 他にも応用きくものならゼヒ覚えておきたいので! よろしくお願いします

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

正規表現ではないですが、ポストされた文字をexplode()を使って改行コードで分割し、できた配列をループさせれば可能だと思います。 例えば以下のような感じでしょうか。 $array = explode("\n", $text); $newtext = null; foreach( $array as $k=>$v ){ if( $k % 3 == 0 && $k != 0 )$newtext .= "特定の文字ですよ\n"; $newtext .= $v; } $textはポストされたtextareaの文字列で、改行コードは予め統一しておくという前提です。 もっとスマートな処理があるかと思いますがとりあえず。

koke29
質問者

お礼

UmJammer様 ありがとうございます サンプルばっちり動きました! explode使うってなるほどですねー $k % 3 == 0 この辺りとか、サンプル見たら納得なのですが 自分では思い付きもしませんでした!! 発想が柔軟で素晴らしいです ありがとうございました!

関連するQ&A

  • javaScriptで、テキストエリアのある文字列を見つけて、

    javaScriptで、テキストエリアのある文字列を見つけて、 その行から、1行目と2行目を消すという処理を行いたいのですが、 コーディングがわかりません。 教えて下さい。 (例) 下記のテキストエリアから、「<ターゲット文字列>」を見つけて、 その行から1行目と2行目、つまりは、「さしすせそ」と「たちつてと」を削除したいです。 -----textarea----- あいうえお かきくけこ <ターゲット文字列> さしすせそ たちつてと

  • エクセル)行挿入しても数式をそのままにしておきたい

    よくある質問だったらすみません。あまり上手く検索ができなかったので教えてください。 シート1に、以下のデータがあります。 1 あいうえお 2 かきくけこ 3 さしすせそ 4 たちつてと シート2は、 =シート1!$B$1 =シート1!$B$2 =シート1!$B$3 =シート1!$B$4 という形で数式が張り付けていて、表示としては、 あいうえお かきくけこ さしすせそ たちつてと になっています。 シート1の3行目に行挿入をして 1 あいうえお 2 かきくけこ 3 さしすせそ 4 なにぬねの 5 たちつてと としたところ、 シート2のほうの数式が、 =シート1!$B$1 =シート1!$B$2 =シート1!$B$3 =シート1!$B$5 となり、 あいうえお かきくけこ さしすせそ たちつてと のままなんです… 希望としては、シート2の数式はそのままに、 =シート1!$B$1 =シート1!$B$2 =シート1!$B$3 =シート1!$B$4 で、 あいうえお かきくけこ さしすせそ なにぬねの とさせたいんです。 $をつければずれないと思っていたのですが、何がおかしいかわかりません。 幼稚な質問かもしれません。わかりにくい表現で申し訳ないです。 よろしくお願いいたします。

  • 行ごとでなく文字列を区切りにファイルを読み込む

     非常の大きなテキストファイルを、1行1行ではなく、特定の文字列、 できれば正規表現を区切りとして、100行ぐらいをまとめて順次読み込みたいのですが、 どのようにすればいいでしょうか。よろしくお願いします。

    • ベストアンサー
    • Java
  • 文字を反対に

    文字を反対にしたいんですが… えっと、例えば あいうえお かきくけこ さしすせそ たちつてと… と長く続いているものを 一発で反対に … たちつてと さしすせそ かきくけこ あいうえお という風にしたいのですが、出来ますか? すごく長い文章があって、それを 反対にしたいのですが… やっぱり一行一行反対にするしか 方法は無いのでしょうか?

  • 指定位置に文字を挿入したい。

    Excel、またはテキスト形式、CSV形式を利用して指定位置に文字を挿入する方法を教えてください。 ・123456789→12345-6789のように「6文字目にハイフンを挿入する」ということがしたい ・ファイルは1700行ほどあるのですが、その1700行の全てに「6文字目にハイフンを挿入する」を行いたい ・挿入される文字列に統一性がないので置換は使えません 自分なりに調べてみたところ有料のExcelマクロで使えそうな物はあったのですが なんとか無料で実現する方法はありませんでしょうか? よろしくお願いします。

  • 正規表現で?

    次のような仕組みのページを作りたいと思っているのですが、 どのようにすればいいか、教えてください。 ページにはテキストエリアとボタンが設置されていて、 テキストエリアには5行の文字列が入力されます。 こんな感じで↓ あいうえお かきくけこ さしすせそ たちつてと なにぬねの ボタンをクリックすると、新しいウィンドウに、 次のように表示されるようにしたいです。 A= (1行目の文字列) B= (2行目の文字列) C= (3行目の文字列) D= (4行目の文字列) E= (5行目の文字列) よろしくお願いします。

  • textarea内で改行時に文字を挿入したい

    テキストエリアにデータを表示するようにしています。 改行コードの後に文字を挿入したいのですが できますでしょうか。 よろしくお願いします。

  • ○文字目に文字挿入

    お世話になっています。 正規表現の文字置換s///gを使って数字の3桁目に-を挿入したいですが、どうしたらいいのかわかりません。 どなたか教えていただけないでしょうか。 5770001 ↓ 577-0001 にしたいのでしが…

    • ベストアンサー
    • Perl
  • 正規表現で固定長に揃えたい

    正規表現で固定長に揃えたい 秀丸など正規表現のできるエディタを使用し リターンを含まない長い文字列を固定長にしたいです <例> あいうえおかきくけこさしすせそたちつてとなにぬねのはひふ ↓10文字ずつ改行 あいうえおかきくけこ さしすせそたちつてと なにぬねのはひふ よろしくお願いします

  • 特定の文字列を含む行だけ削除する方法?

    いつもお世話になっています。 Unixであるテキストファイルから、 特定の文字列を含む行(レコード)だけを 削除する方法を教えてください。 現在、grepを使って、いろいろ試しているのですが、 正規表現で、 ”***”を含まない行(レコード)だけを 切り出すとう正規表現の説明が見あたりません。 "^**"は、**以外の文字を検索できるようですが、 文字列に対しては、使えません。 grep以外の方法でも良いのですが、 なるべくシンプルにできる方法がありましたら 教えてください。 宜敷お願いします。

専門家に質問してみよう