2015-04-15 47 views
0

这是我的完整链接。如何更改链接(a)元素中的href(url)?

<a href="http://localhost/mysite/client-portal/">Client Portal</a> 

我想要上面的链接看起来像下面。

<a href="#popup">Client Portal</a> 

我真的不知道如何使用preg_replace来完成这件事。

preg_replace('\/localhost\/mysite\/client-portal\/', '#popup', $output) 
+0

'str_replace()函数'将正常工作。没有正则表达式需要 –

+0

你能举个例子吗? – Ask4Tec

+0

[该手册有很多例子](http://php.net/str_replace) –

回答

1

如果仅仅是这个链接,您可以用str_replace()实现自己的目标:

<?php 

$link = '<a href="http://localhost/mysite/client-portal/">Client Portal</a>'; 
$href = 'http://localhost/mysite/client-portal/'; 
$new_href = '#popup'; 

$new_link = str_replace($href, $new_href, $link); 

echo $new_link; 

?> 

输出:

<a href="#popup">Client Portal</a> 

如果你愿意,你可以使用DOM

<?php 

$link = '<a href="http://localhost/mysite/client-portal/">Client Portal</a>'; 
$new_href = '#popup'; 

$doc = new DOMDocument; 
$doc->loadHTML($link); 

foreach ($doc->getElementsByTagName('a') as $link) { 
    $link->setAttribute('href', $new_href); 
} 

echo $doc->saveHTML(); 

?> 

输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html><body><a href="#popup">Client Portal</a></body></html> 

或者您可以使用preg_replace()这样的:

<?php 

$link = '<a href="http://localhost/mysite/client-portal/">Client Portal</a>'; 
$new_href = '#popup'; 

$regex = "((https?|ftp)\:\/\/)?"; // SCHEME 
$regex .= "(localhost)"; // Host or IP 
$regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; // Path 

$pattern = "/$regex/"; 

$newContent = preg_replace($pattern, $new_href, $link); 
echo $newContent; 

?> 

输出:

<a href="#popup">Client Portal</a> 
+1

谢谢你的回答。但是我已经像上面说的“Dagon”那样做了。 – Ask4Tec

+0

@ Ask4Tec我用preg_replace更新,看一看 –

1

如果你想要你也可以使用jQuery。

<script src="https://code.jquery.com/jquery-1.10.2.js"></script> 

<a class="popupClass" href="http://localhost/mysite/client-portal/">Client Portal</a> 

$(document).ready(function(){ 
    $('.popupClass').attr('href','').attr('href','#popup'); 
}); 

Demo