【问题标题】:PHP: How can you remove/replace a specific href attribute valuePHP:如何删除/替换特定的 href 属性值
【发布时间】:2013-07-04 23:29:30
【问题描述】:

我正在使用 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 并在客户端从那里操作它更快的选项

【问题讨论】:

  • 至于速度,应该不会有太大的区别,除非有大量的文本。您可能需要某种自定义正则表达式来检测匹配的 href 标记。 preg_match()preg_replace() 可以解决问题。我想说如果你在 JS 中这样做很舒服,那就去吧。

标签: php javascript performance api replace


【解决方案1】:

您可以在 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="disabled-link"

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

例子:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 2019-10-24
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多