多くの Stackoverflow 正規表現の投稿を検索しましたが、答えが見つかりませんでした。$text
以下を使用して、特定の文字列内のすべての URL を検索しています。
$pattern = "#((http|https|ftp|ftps)://)?([a-zA-Z0-9\-]*\.)+[a-zA-Z0-9]{2,4}(/[a-zA-Z0-9=.?&-]*)?#";
(より正確/効率的/...があるかもしれないことに同意しましたが、それは問題ではありません...まだ)。
このテキスト入力で:
$text = "Website: www.example.com, ";
$text .= "Contact us: http://www.example.com/cu?t=contactus#anchor, ";
$text .= "Email: contact@example.com";
次に、
preg_match_all($pattern, $text, $matches);
これらを返します:
www.example.com
http://www.example.com/cu?t=contactus
example.com
最後example.com
はメールからのもので、除外できるようにしたいです。
の組み合わせを何度も試しましたが[^@]
、(?!@)
うまくいきませんでした。まだ電子メールの結果を受け取っています。
私ができる最善の方法は@
、最初にオプションを含めて、それが返されるようにし@example.com
、結果をループして、で始まるものを除外すること@
です。
より良い解決策はありますか?電子メールである部分文字列を含まない単一のパターン?