Парсинг URL в базу данных - PullRequest
1 голос
/ 12 января 2012

У меня есть форма, в которой пользователи могут вводить URL. Теперь очевидно, что некоторые из них будут помещать в www.example.com/path или example.com/path или http://www.example.com/path или даже http://example.com/path.

Что я хочу сделать, это извлечь весь URL-адрес хоста и т. Д. И поместить его в стандартной форме в мою базу данных. Поэтому независимо от того, как он отформатирован во входных данных, все они имеют одинаковое форматирование в базе данных.

поэтому входы идут на выходы, как показано ниже

www.example.com/path -> http://www.example.com/path
example.com/path -> http://www.example.com/path
http://www.example.com/path -> http://www.example.com/path
http://example.com/path ->http://www.example.com/path

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Используйте regex для URL, затем используйте preg_match при его проверке и укажите PREG_OFFSET_CAPTURE, чтобы превратить его в массив значений в совпадениях.Затем манипулируйте им до строки, которая соответствует вашему формату.

1 голос
/ 12 января 2012

Найдите пример ниже:

function updateUrl($url) {  
    if (strpos($url, '://')=== false && strpos($url, 'www.')=== false) {
        $url = 'http://www.' . $url;
    }
    else if(strpos($url, '://')=== false) {
        $url = 'http://' . $url;
    }
    else if(strpos($url, 'www.')=== false) {
        $url = str_replace('http://','http://www.',$url);
    }
    else {
        $url = $url;
    }
    return $url;
}
$url = "http://example.com/path";
echo updateUrl($url);
...