如何更改链接(a)元素中的href(url)?

时间:2015-04-15 02:31:53

标签: php jquery html regex string

这是我的完整链接。

<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)

2 个答案:

答案 0 :(得分: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 :(得分: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