アプリ版:「スタンプのみでお礼する」機能のリリースについて

2点ご教示お願い致します。

1点目・・・
テキストエリア入力→投稿という
一言コメントを作成したのですが、
正規表現で、あることを防ぎたいのですが、

そのあることというのが
改行を3回以上したときに、2回までに制限させる?ことをしたいのです。

例)\n\n\n→<br><br> ←改行が3回以上続いた時、改行を2回までに・・・

$value =~ s/(\n\d\s){3,}/<br><br>/g;
{3,}というのを指定するというのは、わかったのですが、使い方がわからない;;

2点目・・・
一言コメントで
テキストエリア入力投稿「本文」と名前を入力する形で

表示する際、
my ($NAME,$TEXT,$TIME) = split(/,/, $_);

これで、カンマ区切りを指定しているのですが、
例えば、

本文などに「,」カンマ区切りしているカンマと同じカンマを(半角のカンマ)
本文に入ると
この場合ですと、時間が表示されなくなります。

カンマで区切って、テキストファイルに区切るはずのカンマが増えたから
表示されないのはわかるのですが、

現在
$value =~ s/,/,/g;
このように、半角カンマを全角カンマに変えるというださいことをしてます。

そこで、半角カンマでもしっかり表示される方法として、
カンマ区切りでは、できないですよね・・・・?

タブ区切りのほうがいいのでしょうか・・・?
my ($NAME,$TEXT,$TIME) = split(/\t/, $_);

A 回答 (2件)

1点目


正規表現で改行は面倒が多いので、別の文字に置換してから処理すると便利です
例)
s/\n/\x00/gs;
s/\x00{3,}/\x00\x00/g;
s/\x00/<br>\n/g;

2点目
タブ区切りにするで問題ないと思います。

2点目の別案
カンマ区切りのデータは CSV といいまして、れっきとした規格が存在します
https://tools.ietf.org/html/rfc4180
この規格に対応するモジュールを CPAN 等から導入すれば、
データ中にカンマや改行などが入っていても、問題なく扱えます
    • good
    • 0
この回答へのお礼

ありがとうございます!

1点目
解決できました。
このようなやり方もあったのですね!

2点目なのですが、
タブで問題がないというのを聞いて安心しました。

別案のURL
現在すぐに理解できそうにありません;;
申し訳ございません;;

なので、更に別案で、1点目を教えて頂いて、思ったのですが、

書き込む時は、全角カンマで書き込んで、
表示するときに半角カンマにするというのでも問題ないですよね?
(まだ実行できてませんが;;)

お礼日時:2017/05/02 16:05

> 書き込む時は、全角カンマで書き込んで、


> 表示するときに半角カンマにするというのでも問題ないですよね?

入力したときに全角カンマだったものが、半角に変わってしまいます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!