Создайте фильтр preg_match, чтобы в базу данных sql добавлялись только новые фан-страницы Facebook без дубликатов. - PullRequest
1 голос
/ 05 марта 2012

Пожалуйста, помогите исправить проблему с фильтром. Это фан-страница Facebook, как веб-сайт для пользователей, чтобы добавлять фанатские страницы друг другу.

хочу сделать: В базу данных сайта не добавляются повторяющиеся страницы фанатов Facebook. фильтр (http или https) и ссылка на фан-страницу в Facebook (с / без /) одинаковые.

example 
http://www.facebook.com/Shareitto
https://www.facebook.com/Sharetto
http://www.facebook.com/Sharetto/
They all could be added to the site (this is problem, I want to filter)
Below is the complete code with filter




            if(isset($_POST['add'])){
            if(!preg_match("/\bfacebook.com\b/i", $_POST['url']))
        {$msg = "<div class=\"msg_error\">ERROR: You need to add facebook page!
        </div>";}
            else if($_POST['title'] == ""){$msg = "<div class=\"msg_error\">
        ERROR: Title can't be empty!</div>";}
            else{
            mysql_query("INSERT INTO 'facebook' (user, facebook, title, cpc)
         VALUES('{$data->id}', '{$protectie['url']}', '{$protectie['title']}',
         '{$protectie['cpc']}' ) ");
            $msg = "<div class=\"msg_success\">Page added with success!</div>";
            }}
            ?>






     If need more, please reply!

1 Ответ

1 голос
/ 10 марта 2012

Я бы подошел к этому так, чтобы хранить только часть URL после http://facebook.com/,, поэтому в случае, если вы упомянули только «Sharetto», сохраняется.Это значительно упрощает поиск, поскольку в этом случае выполнение REGEX в MySQL является излишним использованием ресурсов.При извлечении данных из базы данных вы должны были бы добавить имя фан-страницы к URL-адресу Facebook.

Я бы выделил важную часть URL-адреса с помощью регулярного выражения, подобного этому:

$url = "http://www.facebook.com/Sharetto/";

$matches = array();
if (preg_match('~^https?://(?:www\.)?facebook.com/(.+)/?$~',$url,$matches)) {
    $fanpageName = $matches[1]; // In this case: "Sharetto"
    // Do lookup in DB for $fanpageName, not $url
}

По сути, полностью выбросьте URL-адрес Facebook и просто выделите важную часть.

...