我想从用户输入中删除一些网址。
示例用户输入
$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 :(得分: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";
}
}
我希望我没有遗漏任何东西。