PHP:如何删除/替换特定的href属性值


PHP: How can you remove/replace a specific href attribute value

我正在用php解析数据库中的一些文章,这些文章中有我想覆盖的链接。链接始终以"http://cdn.example.com/"开头,结束解析器为htmlspecialchars_decode($item->parse_articles(), ENT_NOQUOTES)

因此,在将文章传递到HTML DOM之前,我想替换所有包含(?)example.com的href,或者甚至可能更快、尽可能完全删除<a>

<a href="http://cdn.example.com/whatever?else" target="_blank"></a>

这怎么可能?如果可能的话,这个选项是否被认为比首先将其传递到DOM并在客户端进行操作更快

您可以在PHP中尝试以下操作:

$newtext = preg_replace('/^("http:'/'/cdn'.example'.com'/){1}(.*)("){1}$/', '"#" class="disabled-link"', $oldtext);

$oldtext是作为字符串的输入文章。$newtext是要在页面上回显的文本。

分解:

  1. 查找以"开头的文本http://cdn.example.com/
  2. 然后匹配任何内容
  3. 在"
  4. 替换为"#"class="禁用链接"

这应该可以让你删除链接,我还添加了类部分,这样你就可以添加一些CSS来将链接样式设置为文本。

示例:

.disabled-link{
    color:#000;
    pointer-events: none;
    cursor: default;
    text-decoration: none;
}

所有这些结合起来将为用户提供一个完全不可见的链接,而无需查看DOM或源代码。