php - 如何更改链接 (an) 元素中的 href (url)?

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

最佳答案

If is only this link you can achieve your goal with 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>

If you want you can use 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>

Or you can use preg_replace() like this:

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

关于php - 如何更改链接 (an) 元素中的 href (url)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29640617/

相关文章:

php - PDO 计数和循环优化

javascript - jQuery 伪选择器 ":not"IE7 不工作?

javascript - 任何可能的方法来保存 html 中单击的元素并在 ajax 调用后检索

php - header ("Location:/");重定向适用于本地主机,但不适用于远程服务器

php - MySql - 在执行查询之前使用 PHP 获取可能的错误结果

php - 使用函数和 if else 的多个搜索表单

jquery - 滑动切换类

php - 如何居中动态生成的div?

javascript - JQuery 和属性中的特殊字符

javascript - 更改 Google map 位置时遇到问题