2011-12-22 6 views
0

文字列からURLを取得するサードパーティの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 & ID = ffd89dfef3を\と私はしたい文字列は次のようになりますURLが次のようにエスケープバックスラッシュを削除する:http://us2.campaign-archive1.com/?u=fdf89fgd7sdf7d8&id=ffd89dfef3/ 私はいくつかの異なるパーサとRegexを試してきましたが、Regexではそれほど強くないので、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

あなたの正規表現は、スラッシュのbecausを動作しません。文字列をstripslashes()で渡してから正規表現を適用してください

0

あなたはstr_replace()を試しましたか?例えば)

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