我有一个由第三方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
非常感谢任何帮助。
施
- 梅斯蒂卡
答案 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);