解析字符串以获取URL

时间:2011-12-22 12:35:31

标签: php string parsing preg-match preg-match-all

我有一个由第三方Web服务自动生成的字符串,我希望从字符串中获取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&amp; id = ffd89dfef3 \我想删除转义反斜杠,所以URL是:{ {3}}

我尝试过一些不同的解析器和Regex,但我在Regex中并不是那么强大,似乎无法正确获取URL。我尝试了这个preg_match,但它不起作用,只返回空数组:

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

非常感谢任何帮助。


- 梅斯蒂卡

3 个答案:

答案 0 :(得分:1)

试试这个:

<?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]);
?>

答案 1 :(得分:0)

由于斜杠,你的正则表达式无效。只需通过stripslashes()传递字符串,然后应用正则表达式

答案 2 :(得分:0)

你试过str_replace()吗? e.g)

$url = "http:\/\/us2.campaign-archive1.com\/?u=fdf89fgd7sdf7d8&id=ffd89dfef3";
$url = str_replace('\\', '', $url);