Вернуть URL из строки php - PullRequest
1 голос
/ 21 июля 2011

У меня есть массив строк PHP, который выглядит так:

Array
(
    [1] => Lorem ipsum dolor sit amet http://www.google.com/search?q=stackoverflow consectetur adipiscing elit.
    [2] => Phasellus tempor vehicula fringilla. www.google.com/search?q=stackoverflow&ie=utf-8
    [3] => google.com/search?q=stackoverflow&ie=utf-8 Aenean in cursus libero.
);

URL-адреса будут всевозможными формами, мне нужен массив этих ссылок.Как то так:

Array
(
    [1] => http://www.google.com/search?q=stackoverflow
    [2] => http://www.google.com/search?q=stackoverflow&ie=utf-8
    [3] => http://www.google.com/search?q=stackoverflow&ie=utf-8
);

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

Код для вас:

$pattern = '/((https?|ftp)\:(\/\/)|(file\:\/{2,3}))?(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(((([a-zA-Z0-9]+)(\.)?)+)(\.)(com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|[a-z]{2}))([\/][\/a-zA-Z0-9\.]*)*([\/]?(([\?][a-zA-Z0-9]+[\=][a-zA-Z0-9\%\(\)]*)([\&][a-zA-Z0-9]+[\=][a-zA-Z0-9\%\(\)]*)*))?/';

$a = array(
    'Lorem ipsum dolor sit amet http://www.google.com/search?q=stackoverflow consectetur adipiscing elit.',
    'Phasellus tempor vehicula fringilla. www.google.com/search?q=stackoverflow&ie=utf-8',
    'google.com/search?q=stackoverflow&ie=utf-8 Aenean in cursus libero.',
);

$urls = array();

foreach($a as $line)
{
    if(!preg_match($pattern, $line, $match))
        continue;

    $urls[] = $match[0];
}

var_dump($urls);

Регулярное выражение было взято из здесь и немного исправлено.

0 голосов
/ 21 июля 2011

Вы должны написать правильное регулярное выражение для достижения этой цели.Посмотрите на это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...