如何从用户输入中删除特定URL?

时间:2011-02-24 21:12:56

标签: php

我想从用户输入中删除一些网址。

示例用户输入

$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的任何域我想删除输出或返回空结果。也许不止一个域名。让我知道。

3 个答案:

答案 0 :(得分: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);

这应该删除您示例中的所有内容。

答案 1 :(得分:0)

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

您可以使用数组替换\ remove multiple domains

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

答案 2 :(得分:0)

确定。你可以做到

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

我希望我没有遗漏任何东西。