Разобрать строку, чтобы получить URL внутри - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть строка, автоматически сгенерированная сторонним веб-сервисом, где я хочу получить URL-адрес из строки. Строка выглядит так:

'document.write("<div class=\"display_archive\"><div class=\"campaign\">20\/12\/2011 - <a href=\"http:\/\/us2.campaign-archive1.com\/?u=fdf89fgd7sdf7d8&id=ffd89dfef3\" title=\"News\" target=\"_blank\">News<\/a><\/div><\/div>");'

Я хочу получить URL-адрес, в приведенном выше случае этот URL-адрес: http://us2.campaign -archive1.com /? U = fdf89fgd7sdf7d8 & id = ffd89dfef3 \ и я хочу удалить escape-обратную косую черту, поэтому URL-адрес: http://us2.campaign - archive1.com/?u=fdf89fgd7sdf7d8&id=ffd89dfef3/

Я пробовал использовать несколько разных анализаторов и Regex, но я не так силен в Regex и, похоже, не могу правильно получить URL. Я попробовал этот preg_match, но он не работает и возвращает только пустые массивы:

%^((http?://)|(www\.))([a-z0-9-].?)+(:[0-9]+)?(/.*)?$%i

Любая помощь очень ценится.

Искренняя
- Местика

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

Попробуйте это:

<?php
$response = 'document.write("<div class=\"display_archive\"><div class=\"campaign\">20\/12\/2011 - <a href=\"http:\/\/us2.campaign-archive1.com\/?u=fdf89fgd7sdf7d8&id=ffd89dfef3\" title=\"News\" target=\"_blank\">News<\/a><\/div><\/div>");';

preg_match('/href=\\\\\"([^\"]+)/', $response, $matches);

echo 'Raw URL: ' . $matches[1] . '<br />';
echo 'Clean URL: ' . stripslashes($matches[1]);
?>
0 голосов
/ 22 декабря 2011

вы пробовали str_replace (). например)

$url = "http:\/\/us2.campaign-archive1.com\/?u=fdf89fgd7sdf7d8&id=ffd89dfef3";
$url = str_replace('\\', '', $url);
0 голосов
/ 22 декабря 2011

Ваше регулярное выражение не работает из-за косой черты. Просто передайте строку с помощью stripslashes (), а затем примените регулярное выражение

...