0

そこで、stackoverflow をサーフィンしている素敵な人々の助けを借りて、人々が投稿したリンクを削除するための正規表現を取得しました。今、おそらく「」で投稿全体を削除するものを見つけたいと思うので、私のフォームは投稿を許可しません。(代わりに、[LINK REMOVED] で私のサイトをチェックしてください。これは素晴らしいですが、リンクだけではなく文全体を削除した方が良いかもしれません.) !

これが私の現在の正規表現です:

$a = $_POST['msge'];
$b = preg_replace('%[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)%', '[LINK REMOVED]', $a);

何か案は?

4

1 に答える 1

1

文字列内のリンクを見つけるためのより良い方法があります。これは、この関連する質問で与えられた Perlの例です。正規表現の使用に夢中になっている場合、これは別の関連する質問で言及されており、現在試しているものよりも有望に見えます。

リンクを指定して文全体を置き換えたい場合は、次のようなものを使用できます。

[^.|^!|^?]*(link)[^.|^!|^?]*[.|!|?]

明らかに、link をリンク パターン マッチに置き換えたいと思うでしょう。

主観的には、人々が投稿しているコンテンツの途中から文全体を削除することは、投稿の全体的な意味を変える可能性があるため、少し奇妙かもしれないこともお勧めします. リンクを削除することが主な目的である場合 (たとえば、スパム バックリンクを防止するため)、リンクを -LINK- のようなわかりやすいものに置き換えて難読化することができます。

于 2012-07-23T01:24:45.747 に答える