当url包含空格时,如何从php中的html代码打印url

时间:2013-05-03 12:14:27

标签: php url

看到我在html代码中有一个网址

<a href="http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3" rel="nofollow" target="_blank" style="color:green;">play</a>       

现在我想打印这个url,因为它是在php页面中编写的

http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3

你可以看到网址 05 Dabangg Reloaded 之间是空格。我让这个程序从这个HTML代码打印url ..

$str = "<a href="http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3" rel="nofollow" target="_blank" style="color:green;">play</a>";

$pattern = '`.*?((http|ftp)://[\w#$&+,\/:;=?@.-]+)[^\w#$&+,\/:;=?@.-]*?`i';
if (preg_match_all($pattern,$str,$matches))


foreach($matches[1] as $data)
{
$str=$data;
echo $str; 
}

然后我得到了这个

http://b48.ve.vc/b/data/48/3746/05 

请不要提及foreach($ matches [1] as $ data)line bcoz我正在使用它有这么多网址..我只是想知道如何以这种格式打印整个网址。

http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3

空间变得非常重要..不知道如何解决它.. 我需要在里面添加什么

$pattern = '`.*?((http|ftp)://[\w#$&+,\/:;=?@.-]+)[^\w#$&+,\/:;=?@.-]*?`i';

使其完全可行。 请建议我任何想法。

2 个答案:

答案 0 :(得分:2)

$str = '<a href="http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3" rel="nofollow" target="_blank" style="color:green;">play</a>';
$arr = explode("\"", $str);
$pattern = '`.*?((http|ftp)://[\w#$&+,\/:;=?@.-]+)[^\w#$&+,\/:;=?@.-]*?`i';
$url = preg_grep($pattern,$arr);
$url = implode('',$url);
Output: $url = 'http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3'

<小时/> 更新:第二个解决方案[参考 - DOMElement]

$str = '<a href="http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3" rel="nofollow" target="_blank" style="color:green;">play</a>';
$DOM = new DOMDocument;
$DOM->loadHTML($str);
$search_item = $DOM->getElementsByTagName('a');
foreach($search_item as $search_item) {
    $url = $search_item->getAttribute('href');
}
echo $url; //Output: http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3

答案 1 :(得分:1)

您可以使用%20对每个空格进行str_replace以对您的网址进行编码

<?php
 $url_org = 'http://b48.ve.vc/b/data/48/3746/05 Dabangg Reloaded_-_www.DjPunjab.Com.mp3';
 $url_edited = str_replace(" ", '%20', $url_org);
?>
 <a href="<?php echo $url_edited; ?>" target="_blank"> HERE </a>

这样可行。

相关问题