2017-11-17 2 views
1

複数のテキストフィールドがあるフォームがあります。「http」または「https」が含まれていない文字列からURLを抽出する方法

ユーザーの入力にあるすべてのリンクを取り除きたい(http(s)で始まるかどうか)。例えば

こんにちはみんなは、私のウェブサイトを確認してください。http://www.example.com/page.php?id=5、 をここに私のFacebookのページには、http://facebook.com/homeと私のツイッターwww.twitter.com/home

です

私はすべてのリンクを取り除きたいと思いますが、これまでに試したことは次のとおりです:

$userInput = preg_replace("/\S+\.\S+/", "", $userInput); 

これは機能しますが、P.H.Pのような単語も削除されます。

ユーザーがリンクの後に空白を追加しないと失敗します。

要件を満たすためにRegExを編集するにはどうすればよいですか?

答えて

2

あなたはa demo on regex101.comを参照してください

(?:https?://)?\w{3,}\.\S+ 

を試すことができ、これは、しかし、いくつかのあいが必要な場合があります。


内訳:

(?:https?://)? # http:// or https://, both are optional 
\w{3,}   # at least three word characters 
\.    # a dot 
\S+   # not a whitespace, 1+ 


PHPでは:あなたが*リンクについて話している場合

$new_string = preg_replace('~?:https?://)?\w{3,}\.\S+~', '', $your_string_here); 
+0

完全に停止した直後に(スペースなしで)「Please」という言葉をつけても、それはその言葉をつかむ:/ https://regex101.com/r/mSYCaO/4 –

+0

@ZahidSaeed:はい。あなたはもっと多くのサンプル文字列を提供する必要があります。 – Jan

+0

現在のものをお試しいただけますか? –

関連する問題