- ベストアンサー
文字の挿入
こんにちは テキストエリアに好きな言葉をガンガン書いていってPOSTした データに例えば3行ごとに特定の文字を挿入する というような ことは果たして出来るのでしょうか? あいうえお かきくけこ さしすせそ 特定の文字ですよ たちつてと … ↑のような感じのことです 正規表現を使えばなんとかなるものなのか、実現不可能なのか どうにも判断出来ないので宜しかったら教えて頂けますか??
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
書いてから気がついたんですが $str=preg_replace("/(.*\n){3}/","$0hoge\n",$str); で十分でしたね。 で$0とはパターンにマッチした文字列のことです。 この場合は何かの文字+改行が3回繰り返される文字列です
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
特殊な条件がなければ以下のような形でよいのでは? <? $str=<<<eof あいうえお かきくけこ さしすせそ たちつてと なにぬねの はひふへほ まみむめも eof; $str=preg_replace("/.*\n.*\n.*\n/","$0hoge\n",$str); print nl2br($str); ?>
お礼
yambejp様 いつもありがとうございます サンプルの動作 バッチリでした! $0hoge\n ここのところの $0 っていうのは何なんですか? ちょっと調べてみましたが わかりませんでした これが無いと このサンプルは欲しい動きをしない っていうのは試してみてわかったんですが 初めて見たもので…良かったら 教えて下さい 他にも応用きくものならゼヒ覚えておきたいので! よろしくお願いします
- UmJammer
- ベストアンサー率58% (115/196)
正規表現ではないですが、ポストされた文字をexplode()を使って改行コードで分割し、できた配列をループさせれば可能だと思います。 例えば以下のような感じでしょうか。 $array = explode("\n", $text); $newtext = null; foreach( $array as $k=>$v ){ if( $k % 3 == 0 && $k != 0 )$newtext .= "特定の文字ですよ\n"; $newtext .= $v; } $textはポストされたtextareaの文字列で、改行コードは予め統一しておくという前提です。 もっとスマートな処理があるかと思いますがとりあえず。
お礼
UmJammer様 ありがとうございます サンプルばっちり動きました! explode使うってなるほどですねー $k % 3 == 0 この辺りとか、サンプル見たら納得なのですが 自分では思い付きもしませんでした!! 発想が柔軟で素晴らしいです ありがとうございました!
お礼
yambejp様 更にシンプルな回答ありがとうございます! 正規表現って今のところ避けて通っている部分なのですが 使いこなせたら、かぁなり便利ですねぇ 勉強した方が絶対いいなーって今回思いました $0 の件も教えて頂いて本当にありがたいです こんなのあるんですねぇ 知らないことばっかりですよ ホントにありがとうございました!!