2015-04-15 81 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