下記文字列から PHP を用いて hoge@hoge.com を取得したいです。綺麗な書き方をご教授ください。(正規表現など)


$read=”******¥nFrom hoge@hoge.com 2005-01-01¥n******¥n******¥n”
$ar= Explode(”¥n”, $read);

for ($i=0 ; $i < 8 ; $i++)
{
$str= $ar[$i];
if (0 == StrNCmp($str, ”From”, 4))
{
$value= SubStr($str, 5);
$pos= StrPos($value, ” ”);
$value= SubStr($value, 0, $pos);

PrintF(”from= [%s]¥n”, $value);
}
}

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/12/08 08:12:08
  • 終了:--

回答(3件)

id:haru1234 No.1

haru1234回答回数12ベストアンサー獲得回数02005/12/08 09:32:51

ポイント20pt

URLはダミーです。


こんな感じでいかがでしょう?


<?php

$read=”******¥nFrom hoge@hoge.com 2005-01-01¥n******¥n******¥n”;

preg_match(”{[!$%&*¥-./0-9;?a-z^_~]+@[¥-.0-9a-z_~]+¥.[¥-.0-9a-z_~]+}”,$read,$parts);

print_r( $parts);

?>


蛇足かもしれませんが(”と¥)は、はてなに登校する際に全角に変換されていますので

コピペで動かしてもうまく動きません。

半角に変換後、動作させてみてください。

id:disca

ありがとうございます。「@」「.」を見るのですね!。大変参考になります。

---

To aaa@bbb¥n

CC cc@cc.com

From hoge@hoge.com

のような場合ですとどうなりますでしょうか?

2005/12/08 10:54:07
id:samcirculation No.2

SAMC回答回数7ベストアンサー獲得回数02005/12/08 11:05:03

ポイント20pt

URLはダミーです。

キレイかどうかは自信ありませんが、以下の方法でも取り出すことができます。


$read=”******¥nFrom hoge@hoge.com 2005-01-01¥n******¥n******¥n”;

list($data1, $data2, $data3, $data4) = explode(”¥n”, $read);

list($from, $email, $date) = explode(” ”, $data2);

echo $email;


正規表現で取り出す場合は、


$read=”******¥nFrom hoge@hoge.com 2005-01-01¥n******¥n******¥n”;

list($data1, $data2, $data3, $data4) = explode(”¥n”, $read);

eregi(’[_a-zA-z0-9?-]+(¥.[_a-zA-z0-9?-]+)*¥@’ . ’[_a-zA-z0-9?-]+(¥.[a-zA-z]{1,3})+’, $data2, $regs);

echo $regs[0];


でどうでしょう。

id:disca

ありがとうございます。「From」が付いている場合のみを取り出したい場合はどうすればよいでしょうか。

2005/12/08 11:13:35
id:samcirculation No.3

SAMC回答回数7ベストアンサー獲得回数02005/12/08 16:06:31

ポイント20pt

Fromがあるかどうか判断する場合は、以下のように最後の2行をif文の中に入れてはどうでしょうか?


$read=”******¥nFrom hoge@hoge.com 2005-01-01¥n******¥n******¥n”;

list($data1, $data2, $data3, $data4) = explode(”¥n”, $read);

if (eregi(”From”, $data2)) {

eregi(’[_a-zA-z0-9¥-]+(¥.[_a-zA-z0-9¥-]+)*¥@’ . ’[_a-zA-z0-9¥-]+(¥.[a-zA-z]{1,3})+’, $data2, $regs);

echo $regs[0];

}

id:disca

ありがとうございます。たいへんスマートです^^。

--

みなさま、ありがとうございました。

2005/12/08 23:57:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません