2010-07-21 22 views

回答

13

您可以使用preg_replace來做到這一點。

的電子郵件:

$pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/"; 
$replacement = "[removed]"; 
preg_replace($pattern, $replacement, $string); 

對於網址:

$pattern = "/[a-zA-Z]*[:\/\/]*[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+/i"; 
$replacement = "[removed]"; 
preg_replace($pattern, $replacement, $string); 

資源

PHP手冊條目:http://php.net/manual/en/function.preg-replace.php

信貸,信貸是由於:電子郵件正則表達式取自preg_match ma取自NPAGE和URL的正則表達式:http://www.weberdev.com/get_example-4227.html

+0

嗯只是試過,並刪除了我的整個文字.... – JEagle 2010-07-21 19:56:54

+0

你可以發佈一小段文字樣本? – Josiah 2010-07-21 20:00:32

+0

這只是我的隨機文本。沒有具體的,只是一些電子郵件地址和一些鏈接 – JEagle 2010-07-21 20:08:12

1

試試這個:

$patterns = array('<[\w.][email protected][\w.]+>', '<\w{3,6}:(?:(?://)|(?:\\\\))[^\s]+>'); 
$matches = array('[email removed]', '[link removed]'); 
$newString = preg_replace($patterns, $matches, $stringToBeMatched); 

注意:你可以傳遞的模式陣列,並運行它兩次,而不是匹配到的preg_replace。

+0

的模式謝謝。它工作,但它沒有與www.site.com – JEagle 2010-07-21 19:59:54

+0

工作www.site.com不是一個鏈接。你想刪除網址? – Fosco 2010-07-21 20:02:26

+0

哎呀...是的,請 – JEagle 2010-07-21 20:05:01

1

我要去upvote的答案已被刪除。它鏈接到Linux期刊文章Validate an E-Mail Address with PHP, the Right Way,指出任何人提出的幾乎每個電子郵件正則表達式都有什麼問題。

電子郵件地址的有效格式範圍比大多數人想象的要廣泛得多。

0

我的回答是約西亞/[^@\s]*@[^@\s]*\.[^@\s]*/的電子郵件的變化,其郵件地址中後工作正常,但也可以匹配任何puctuation:demo 1

適應正則表達式如下/[^@\s]*@[^@\s\.]*\.[^@\s\.,!?]*/排除.,!?demo 2

相關問題