• 締切済み

phpについてです。初心者です。

=sakjdhksahdkjsahdaksdhask<aaaaaaa@aa.jp> この文字列から aaaaaaa@aa.jp だけを抜き出したいです。 $pattern="|[<]+(.*)+[^>]|"; preg_match_all($pattern,$last_rssdate,$match); とすると <aaaaaaa@aa.jp となってしまいます。 かなり単純かもしれないですが、わかりません。 よろしくお願いします。 助けて下さい。

みんなの回答

  • golgo-goo
  • ベストアンサー率47% (8/17)
回答No.3

2です。 案1修正しました。 // 案1 preg_match('/<[^>]*>/',$str,$match) ; $addr = preg_replace('/<|>/', '', $match[0] ) ; echo $addr."\n" ;

  • golgo-goo
  • ベストアンサー率47% (8/17)
回答No.2

こんな感じでどうでしょう。 <?php $str = "adataadfkljdld<test@test.local>" ; // 案1 preg_match('/<.*[^>]>/',$str,$match) ; $addr = preg_replace('/<|>/', '', $match[0] ) ; echo $addr."\n" ; // 案2 $addr2 = preg_replace('/.*<([^>]*)>.*/', '${1}' , $str ) ; echo $addr2."\n" ; ?> 案2は1コマンドで抽出できますが、ちょっと分かりにくいかも。 個人的には、案1を使うと思います。デバッグもしやすそうですし。 案2については、preg_replaceのマニュアルの例1がわかりやすい例だと想います。 http://www.php.net/manual/ja/function.preg-replace.php

  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

メールアドレスを真面目に抽出するのは難しいと思うので、意図されているであろう 「<>の中のメールアドレスっぽいもの」を引っこ抜くと仮定します。 この内容だと、マッチした文字列全体ではなくて括弧の中だけを後で参照したほうが楽だと思います。 http://ideone.com/UKT3X PHPは不慣れなのですが、正規表現のキャプチャ(後方参照)イメージは掴めるのではないでしょうか

関連するQ&A