Как извлечь информацию из блока URL-адресов в php? - PullRequest
2 голосов
/ 10 мая 2010

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

Для этого примера предположим, что это выглядит так

Random Text - http://www.domain2.com/variable-value
Random Text 2 - http://www.domain1.com/variable-value, http://www.domain1.com/variable-value, http://www.domain1.com/variable-value

http://www.domain1.com/variable-value
http://www.domain2.com/variable-value
http://www.domain1.com/variable-value http://www.domain2.com/variable-value http://www.domain1.com/variable-value

Мне нужно извлечь 2 части информации. Проверьте, является ли его domain1 или domain2 и значение , которое следует за «variable -»

Таким образом, он должен создать многомерный массив, который будет иметь 2 элемента: домен + значение.

Какой лучший способ сделать это?

Ответы [ 3 ]

1 голос
/ 10 мая 2010

Это возможность извлечения URL.Единственная проблема заключается в том, что сами URL не могут содержать запятую.Так что, если достаточно ....

$lines = explode('\n', $urls);

for($i = 0; $i < sizeof($lines); $i++)
{
    if(preg_match_all("http:\\/\\/[^,]*variable-([^,]+)", $lines[$i], $matches))
    {

    }
}

Кстати ... совпадения хранятся в массиве $matches.

PS: отредактировано ... я забыл экранировать от обратной косой черты, и вам нужно искать строку в строке, чтобы убедиться в правильном поведении ... протестируйте регулярное выражение в http://www.regex -tester.de /regex.html ... это просто сработало с моим регулярным выражением.

PPS: После дальнейших исследований я нашел эту страницу: http://internet.ls -la.net / folklore / url-regexpr.html .Он содержит регулярное выражение для URL.Вы можете использовать его для извлечения URL-адресов первым, а на втором шаге вы можете просмотреть свои URL-адреса и извлечь информацию о переменной, например, variable-([\W]+).

0 голосов
/ 10 мая 2010
$text = "http://www.domain1.com/variable-value1, http://www.domain2.com/variable-value2 http://www.domain1.com/variable-value3";
preg_match_all("/http:\\/\\/(.+?)\\/variable-([a-z0-9]+)/si", $text, $matches);
print_r($matches);

Результат:

Array
(
    [0] => Array
        (
            [0] => http://www.domain1.com/variable-value1
            [1] => http://www.domain2.com/variable-value2
            [2] => http://www.domain1.com/variable-value3
        )

    [1] => Array
        (
            [0] => www.domain1.com
            [1] => www.domain2.com
            [2] => www.domain1.com
        )

    [2] => Array
        (
            [0] => value1
            [1] => value2
            [2] => value3
        )

)
0 голосов
/ 10 мая 2010

preg_split , preg_match , parse_url

// split urls
$urls = preg_split('!,\s+!', 'http://www.domain1.com/variable-value, http://www.domain2.com/variable-value, http://www.domain3.com/variable-value');

// check for domain and path variable
foreach ($urls as $url) {

    $parts = parse_url($url);
    // check domain: $parts['host'];
    $matches = array();
    // check path: preg_match('!^/variable-([^/]+)!', $parts['path'], $matches)
}
...