簡體   English   中英

從文本字符串中刪除URL

[英]Remove URLs from text string

是否可以從PHP的字符串中搜索並刪除URL。 在這里談論實際文本而不是HTML。 刪除示例:

mywebsite.com
http://mywebsite.org
www.mywebsite.co.uk
www.my-web-site.net
sub.mywebsite.edu
etc

我的問題是用戶提交描述字段並使用它來推廣自己的URL。 我不確定在不產生太多誤報的情況下是否可行。 我考慮過要檢測http://或www。 但這並不會阻止像mywebsite.com這樣的鏈接

這個正則表達式似乎可以解決問題:

!\b(((ht|f)tp(s?))\://)?(www.|[a-z].)[a-z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-z0-9\.\,\;\?\\'\\\\\+&%\$#\=~_\-]+))*\b!i

它是來自正則表達式庫此正則表達式的略微修改。

我意識到這有點讓人不知所措,但這是在搜索URL時可以預期的。 不過,它與您列表中的所有內容都匹配。

另外,您可以遍歷描述中的每個單詞,並使用parse_url()查看單詞如何分解。 我將保留確定它是否為您的網址的條件。 誤報的可能性仍然存在,但可以大大減少。 結合安德魯標記可疑內容進行審核的想法,這可能是一個可行的解決方案。

您可以嘗試尋找.TLD的內容,其中TLD是任何現有的頂級域,但是可能導致過多的誤報。

是否有可能實現一種系統,在該系統中,包含可疑內容的帖子需要進行審核,而其他帖子必須立即發布? 我假設禁止這種類型的內容是一項嚴格的業務要求。

就個人而言,我傾向於僅阻止任何超鏈接,而將其留在那。 但是,這不是我的應用程序。

您可以輕松地使用正則表達式來查找URL,然后使用PHP的函數preg_replace指定用URL替換的內容。

http://daringfireball.net/2010/07/improved_regex_for_matching_urls

編輯:由於這是用戶提交的數據,因此在存儲“描述”字段之前,您可能需要進行一些驗證,並檢查其是否包含URL。 如果是這樣,您可以阻止用戶保存表單。

為此,您可以使用preg_match ,同時仍使用正則表達式來查找URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM