ОБСУЖДЕНИЕ

Вырезать домен со строки (Регулярки PHP)

6 сообщений1 просмотровОткрыта
#1
Всем доброго времени суток. Решил вчера вернуться в веб, но после долгого перерыва потерял сноровку как бы. Вот следующей функции надо сделать условие. Что-то типа если в переменной нашелся домен моего сайта - то его не надо вырезать.
function AntiReklama($msg) {
$msg = preg_replace('~\[url=(https?://.+?)\](.+?)\[/url\]|(https?://(www.)?[0-9a-z.-]+.[0-9a-z]{2,6}[0-9a-zA-Z/?.~&_=/%-:#]*)~', '###', $msg);
$replace = array('.ru' => '***', '.com' => '***', '.biz' => '***', '.cn' => '***', '.in' => '***', '.net' => '***', '.org' => '***', '.info' => '***', '.mobi' => '***', '.wen' => '***', '.kmx' => '***', '.h2m' => '***', '.esy.es' => '***', '.рф' => '***', '.tk' => '***',);
if(preg_match("/vhostblabla.cpsite.ru/i",$msg)) {
return $msg;
}
else
{
return strtr($msg, $replace);
}
}
#2
Ну так у тебя в первом же стоит условие на вырез ру,а сайт твой ру
#3
Решил таким образом:
PHP

AntiReklama($msg) {
if(preg_match("/vhostblabla.cpsite.ru/i",$msg)) {
return $msg;
}
else
{
$msg = preg_replace('~\[url=(https?://.+?)\](.+?)\[/url\]|(https?://(www.)?[0-9a-z.-]+.[0-9a-z]{2,6}[0-9a-zA-Z/?.~&_=/%-:#]*)~', '###', $msg);
$replace = array('.ru' => '***', '.com' => '***', '.biz' => '***', '.cn' => '***', '.in' => '***', '.net' => '***', '.org' => '***', '.info' => '***', '.mobi' => '***', '.wen' => '***', '.kmx' => '***', '.h2m' => '***', '.esy.es' => '***', '.рф' => '***', '.tk' => '***',);

return strtr($msg, $replace);
}
}


Но это не безопасный вариант. Так как ссылки такого рода проходят: vhostblabla.cpsite.ru/http://site.ru
#4
wmast, и http:// вырез стоит. А суть в том что мне ограничение именно на мой сайт надо сделать. Так как константа define("HOME", "http://vhostblabla.cpsite.ru"); так записана. А потом следующее:
PHP

function smiles($str) {
    $sql = DB::$dbs->query("SELECT `url`, `name` FROM ".SMILES."");
    while($smile = $sql -> fetch()) {
        $str = str_replace($smile['name'], '<img src="'.HOME.'/img/smiles/' . $smile['url'] . '" alt="'.$smile['name'].'"/>', $str);
    }  
    return $str;
} 
function text ($str, $id = null, $filter = null) {
    if ($filter == null)
    {
        $str = html($str);
    }
    if ($id != null) {
    $str = AdmColor($str, $id);
    }
    $str = smiles($str);
    
    $str = AntiReklama($str);
    
    $str = AntiMat($str);

   $str = BBcode($str);
    
    $str = nl2br($str);
    
    return $str;
}

#5
Щас в личку кину проще код,этот староват
#6
Предупреждение!
Название темы должно быть информативным!
Название изменил.