2011-02-24 75 views
0

我想从用户输入中删除一些URL。如何从用户输入中删除特定的URL?

实施例的用户输入

$input = 'http://www.yahoo.com/'; 
$input = 'http://yahoo.com/'; 
$input = 'www.yahoo.com'; 
$input = 'yahoo.com'; 
$input = 'http://answers.yahoo.com/question/index;_ylt=AhiI2Ax0jmujpU01wK7W4cLj1KIX;_ylv=3?qid=20110224130854AA9LGdy'; 
$input = '<a href="http://yahoo.com">yahoo</a>'; 
$input = '<a href="http://yahoo.com">http://yahoo.com</a>'; 
$input = 'I love <a href="http://yahoo.com">http://yahoo.com</a>'; 

output I love 

yahoo.com任何域欲去除输出或者返回空结果。也许不止一个域名。让我知道。

+0

对不起,我不明白。你能改写你的问题吗? – Glycerine 2011-02-24 21:15:27

+0

如果我正确地理解它,你希望得到这个输入的空字符串。是对的吗? – Voooza 2011-02-24 21:20:42

+0

嗯..对不起。我不知道如何描述我的问题。 Dagon举了一个例子,我想要它:) – 2011-02-24 21:23:13

回答

1

尝试是这样的:

$domains = array('yahoo.com', 'other-domain.org'); 
$domainsrgx = implode('|', array_map('preg_quote', $domains)); 

$filtered_userinput = preg_replace('#(^|\s+)(https?://)?([^/\s]*\.)?('.$domainsrgx.')(/[^\s]*)?(?=(\s|$))#is', '', $userinput); 

这应该从你的榜样删除一切。

+0

谢谢,它的工作原理没有链接。 – 2011-02-24 21:49:25

0
$data=str_replace('yahoo.com','',$data); 

你可以使用数组来代替\删除多个域

$remove=array('yahoo.com','google.com'); 
$data=str_replace($remove,'',$data); 
+0

谢谢,但它只会删除'yahoo.com'。 – 2011-02-24 21:21:23

+0

您可以将变体添加到数组中,或者使用preg_replace() – 2011-02-24 21:25:25

0

好的。你可以做

$rows = split("[\n|\r]", $input); 
$output = ""; 
foreach($rows as $row){ 
    if(strpos($row,"yahoo.com")){ 
      continue; 
    }else{ 
      $output = $row."\n"; 
    } 
} 

我希望我不会错过任何东西。

相关问题