投稿記事の特定文字に反応するには?

[上に] [前に] [次に]
ぴーこ [E-Mail] 1999/09/11(土) 12:46:59
例えば、掲示板に投稿した記事の中に
「あ」という文字が有ると、その
「あ」という文字だけを勝手に判別し、
記事表示の際、太字にしたり、
色を変えたりは出来ますか?

また、その一つの投稿記事の中に
「あ」という文字が何個有るのかを
算出は出来ますか?

こういう事は技術的に可能でしょうか?
可能でしたら、どういうプログラムを
掲示板プログラムに組こめばいいのか
教えてください、よろしくお願いします m(_ _)m。

Aurai 1999/09/11(土) 23:48:54
こんなのですか?
$count = ($message =~ s|あ|<b>あ<\/b>|g);
print $message;
print "\n";
print "$count回置換";

ぴーこ 1999/09/23(木) 11:58:40
どうも済みません、折角レスを下さったのに・・・
反応がすっかり遅くなってしまい恐縮です m(_ _)m。

えーっと、上のプログラムを組み込むと、
--------------------------------------------------------------------------------
[4] (無題) 投稿者: あいあい 投稿日:1999/09/12(Sun) 11:43
ああああいいいうえお、あいうえお

= (ああああいいいうえお、あいうえお =~ s|あ|あ|g"); print ああああいいいうえお、あいうえお; print " "; print "回置換";
--------------------------------------------------------------------------------
こういう風に投稿されるように成りました。

ぴーこ 1999/09/23(木) 12:02:24
<table border=0><tr>
<td valign=top>[$number] <font color=$subj_color><b>$subj</b></font> 投稿者:
<font color=$name_color><b>$name</b></font> <small>投稿日:$date</small></td>
<td> <form action="$script" method="$method">
<input type=submit value="返信">
<input type=hidden name=mode value="res">
<input type=hidden name=resmode value="$number">
</form></td></tr>
<tr><td colspan=2><blockquote>$comment<P>$url</blockquote></td></tr>
</table>

$count = ($comment =~ s|あ|<b>あ<\/b>|g);
print $comment;
print "\n";
print "$count回置換";

<hr>

このような感じで組み込んでみました。
済みません、どこに組み込んだら良いのか
いまいちピンと来なくって・・・
まだまだ、ぜんぜん初心者です。よろしくお願いします。

ぴーこ 1999/09/23(木) 12:04:04
↑上のは、どうも、記事の表示部らしいです。

へっぴり腰 1999/09/23(木) 13:05:45
$commentが本文なんでしょ?
本文を表示した後に置換したって遅いじゃん。
もっと前に組みこみましょう。

ぴーこ 1999/09/23(木) 14:42:06
Auraiさん、へっぴり腰さん、
ありがとうございました。
きちんと動作するように成りました。

ところで、この続きなのですが・・・・

今は「あ」と言う文字に反応して、
数を数えていますが・・・
--------------------------------------------------------------------------------
[14] (無題) 投稿者: あいあい 投稿日:1999/09/23(Thu) 14:27
あいあい

あそい
おそい
いあ

あいこ(5回置換)

--------------------------------------------------------------------------------
太字に成ってるところはちょっと、表記できないのですが。

この反応する特定の文字を、
複数に増やす事は出来ないでしょうか?
先程は「あ」だけでしたが・・・

「あ」と「い」と「う」と「え」という具合に。
これらを見つけ出して同時に平行して太字に変換し、
そうして、「あ」と「い」と「う」と「え」を
足した数を算出するというか・・・・・

例えば、
「あさ起きて、いぬのさんぽにいっていたら、
胡散臭いおっさんとすれ違った・・・」

という例文だと、
「あ」が1こ
「い」が4こ
「う」が0こ
「え」が0こ

という事で、「計5こ」と
これらの合計の数を算出することは可能でしょうか?

Aurai [E-Mail] 1999/09/23(木) 16:01:11
$count = ($comment =~ s/(あ|い|う|え)/<b>$1<\/b>/g);
正規表現を勉強しましょう

J.Naka 1999/09/23(木) 16:24:00
>正規表現を勉強しましょう
と、言う事ですね。
そこまで、テキスト文字列操作に関心あるのなら、
正規表現取得は、乾いた砂が水を吸い込むように捗るでしょう。
ファイト!

J.Naka 1999/09/23(木) 16:40:18
あれ?
正規表現内の()で囲んだ文字列は、
 ・正規表現内では、\1 \2・・・\n で参照できる
 ・正規表現外では、$1 $2・・・$n で参照できる
と、憶えていたんですが、今、実際にやってみると
両方とも正規表現内の参照できました。
↓は両方ともに同じ結果になりました。
 $comment =~ s/(あ|い|う|え)/<b>$1<\/b>/g)
 $comment =~ s/(あ|い|う|え)/<b>\1<\/b>/g)

なんで?

J.Naka 1999/09/23(木) 16:47:17
あっそうか。

$nは、マッチの結果が格納される。
それは正規表現内を含んだ以降のコード全てで有効と言う事。

ですね。
としたら、\nは不要なのでは?

ぴーこ 1999/09/23(木) 18:57:14
[[解決]]
どうもありがとうございました。
お陰様で、きちんと動作するように成りました。

>正規表現を勉強しましょう

はい(^^)。
実は、Perlを勉強してやるー!と思い立ち、
先日、リファレンス本を入手したのですが・・・・
読んでも、頭の中に止まらず、右から左へと、
つーつーと流れていってしまいます。

やはり、超初心者なのに、いきなり
リファレンス本は無理だったか・・・と痛感している所です。
何か初心者向けで、理解しやすいPerlの本があれば、
教えてください。

Aurai 1999/09/23(木) 23:46:13
>としたら、\nは不要なのでは?
$message = 'ああ、すばらしい。おお、すばらしい。';
$message =~ s/(あ|お)\1/<b>$1<\/b>/g;
こんなときとか

[上に] [前に] [次に]