• ベストアンサー

フォームメールからの文字列の切り出しについて

Perl初心者です。 いわゆるフォームメールで受け取った文字列で、 $bodyに以下のような文字列が入っています。 住所:住所1 姓:姓1 名:名1 メールアドレス:メールアドレス1 会社名:会社名1 ここからメールアドレス1を$mailに代入したいのですが、どのようにしたらよいのでしょうか? なお、住所1、姓1、名1、会社名1は固定ではなく何らかの文字列が入っているか、または何も入っていない場合もあります。 お詳しい方、よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

$body =~ /^\Qメールアドレス\E:(.*)$/m; $mail=$1; でいいと思います。

yngway
質問者

お礼

ありがとうございます。 明日試してみます。

yngway
質問者

補足

やってみました。 しかし、$mailには何も入ってませんでした。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>:の左側を半角英数字にすると、 >$mailに文字列が入るようです。 >何がいけないのでしょうか? 全角文字列でうまくマッチングできない場合は、utf8を使うと良いようです。 utf8を使う場合には、\Q\Eは必要ないです(多分)。

参考URL:
http://okweb.jp/kotaeru.php3?qid=1336934
yngway
質問者

お礼

お返事遅くなって申し訳ございません。 utf8に変更はちょっと難しいので、とりあえず半角英数字のマッチングになるよう、フォームメールを変更したいと思います。 この度は大変助かりました。 ありがとうございます。

noname#191236
noname#191236
回答No.2

こんばんわ。 $bodyの内容ですが一字一句間違いはありませんか? (改行、全角/半角等) No,1の方の通り、以下のようにしてやると問題なく出来ましたよ。 #!/usr/bin/perl $body = ' 住所:住所1 姓:姓1 名:名1 メールアドレス:メールアドレス1 会社名:会社名1'; $body =~ /^\Qメールアドレス\E:(.*)$/m; $mail = $1; print "Content-type: text/html\n\n"; print $mail;

yngway
質問者

お礼

ありがとうございます。 No1のところに書くことができなくなっているので、 こちらに書きますが、 メールアドレス:メールアドレス1 ではなく、 mailto:メールアドレス1 のように:の左側を半角英数字にすると、 $mailに文字列が入るようです。 何がいけないのでしょうか? 私もNo1の方のやりかたでOKだと思うのですが。。。