2011-12-22 82 views
0

我有一个字符串,它是由第三方网络服务自动生成的,我想从字符串中获取网址。该字符串看起来是这样的:解析字符串以获取网址

'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,在上述情况下,这个网址:http://us2.campaign-archive1.com/?u=fdf89fgd7sdf7d8 & ID = ffd89dfef3 \,我想删除逃逸反斜杠,所以网址是:http://us2.campaign-archive1.com/?u=fdf89fgd7sdf7d8&id=ffd89dfef3/

我已经尝试了一些不同的解析器和正则表达式,但我没有在正则表达式中那么强大,并且似乎无法正确获取URL。我试过这个preg_match,但它不起作用,只返回空阵列:

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

任何帮助,非常感谢。

真诚
- Mestika

回答

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

你的正则表达式是行不通的斜线因。分析只需通过stripslashes()的字符串,然后申请正则表达式

0

你试过str_replace()。 e.g)

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