PHP 删除特定网站的链接但保留文本

2024-01-29

例如,<a href="http://msdn.microsoft.com/art029nr/">remove links to here but keep text</a> but <a href="http://herpyderp.com">leave all other links alone</a>

我一直在尝试使用 preg_replace 来解决这个问题。我在这里进行了搜索并找到了解决部分问题的答案。

答案在PHP:从文本中删除特定域的所有超链接 https://stackoverflow.com/questions/9856933/php-remove-all-hyperlinks-of-specific-domain-from-text删除特定 url 的链接,但也删除文本。

网站位于http://php-opensource-help.blogspot.ie/2010/10/how-to-remove-hyperlink-from-string.html http://php-opensource-help.blogspot.ie/2010/10/how-to-remove-hyperlink-from-string.html从字符串中删除超链接,但我似乎无法修改该模式,使其仅适用于特定网站。


$html = '...I can haz HTML?...';
$whitelist = array('herpyderp.com', 'google.com');

$dom = new DomDocument();
$dom->loadHtml($html);    
$links = $dom->getELementsByTagName('a');

foreach($links as $link){
  $host = parse_url($link->getAttribute('href'), PHP_URL_HOST);

  if($host && !in_array($host, $whitelist)){    

    // create a text node with the contents of the blacklisted link
    $text = new DomText($link->nodeValue);

    // insert it before the link
    $link->parentNode->insertBefore($text, $link);

    // and remove the link
    $link->parentNode->removeChild($link);
  }  

}

// remove wrapping tags added by the parser
$dom->removeChild($dom->firstChild);            
$dom->replaceChild($dom->firstChild->firstChild->firstChild, $dom->firstChild);

$html = $dom->saveHtml();

对于那些害怕使用 DomDocument 而不是preg_replace出于性能原因,我对此和 Q 中链接的代码(完全删除链接的代码)进行了快速测试 => DomDocument 仅慢了大约 4 倍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 删除特定网站的链接但保留文本 的相关文章

  • 通过jquery传递搜索参数

    我有一个表单 如果用户输入搜索查询 其参数应通过 jquery 传递 并在获取结果后将结果加载到 div 容器中 由于我不太熟悉 jquery 我该怎么做 html currently the data is being displayed
  • 更新重复密钥上的复合密钥 [重复]

    这个问题在这里已经有答案了 我需要更新新行 如果两者都满足 date dat and empId who 作为复合键 但如果其中之一或两者不同 则插入 sql INSERT INTO history SET endtimestamp now
  • Laravel 验证:存在附加列条件 - 自定义验证规则

    在 Laravel 中指定存在验证规则时 是否有一种方法可以引用另一个字段 我希望能够说输入 a 必须存在于表 a 中 输入 b 必须存在于表 b 中 并且表 b 中列 x 的值必须等于输入 a 最好通过例子来解释 public rules
  • 智能位置表单字段

    我的用户注册表单上有一个文本字段location 我本质上希望这个字段能够根据 Google 地图 或同等地图 进行验证 只允许有效位置通过 最好采用类似的格式滑铁卢 伦敦 or 伦敦 英国 要求 除了位置名称之外 我还想返回该位置中心的坐
  • 基本表创建 fpdf

    我找不到使用 fpdf 制作表格并从 mysql 数据库获取数据的合适教程 我只是想知道如何创建一个 我在网上尝试示例时遇到了很多错误 例如 我有 名字 中间名 姓氏 年龄 和 电子邮件 列 如何使用 fpdf 创建表格并回显数据库中的条目
  • 访问 public_html 级别之外/以下的文件

    如何通过 url 访问文件 home uzair etc index php 即使我运行域 something com 它显示了 home uzair public html index php 这个文件 任何人请帮助我如何访问放置在 ho
  • $_POST、$_GET 和 $_REQUEST 之间有什么区别?

    我对这些超级全局变量有点困惑 POST GET and REQUEST 在 PHP 中 在 PHP 中哪些场景需要使用这些变量 这三个变量的主要区别是什么 POST是在使用 application x www form urlencoded
  • 如何计算加权平均值?

    我的语言是PHP 但是算法应该是相当通用的 我有一个关联数组 比方说 评级和评级次数 ratings array 1 gt 1 2 gt 3 3 gt 6 4 gt 3 5 gt 3 这相当于 1 2 2 2 3 3 3 3 3 3 4 4
  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • PHP 相等变量

    我想知道是否有任何方法可以检查大量变量是否相等 如果我只有几个变量 我可以这样做 if a b a c b c 但是 如果我有 20 个变量 则需要一些时间来编写所有组合 还有其他方法吗 if count array unique arra
  • DOMPDF - 未找到“字体”类

    我正在尝试通过命令行添加字体 每次我尝试都会收到以下错误 Fatal error Class Font not found in home scripts public html MarketingPalv2 load font php o
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • Laravel 5.3:护照实现 - {“error”:“invalid_client”,“message”:“客户端身份验证失败”}

    我按照中提到的确切步骤进行操作Laracast Laravel 5 3 的新增功能 Laravel Passport https laracasts com series whats new in laravel 5 3 episodes
  • PHP 时间间隔

    我正在寻找一个看起来应该非常简单的解决方案 但似乎我不能在这里找到任何好的答案 而且我自己似乎无法让它发挥作用 我正在寻找的是设置开始时间 结束时间 然后迭代给定时间间隔之间的一组时间 例如 上午 9 00 下午 5 00 是开始时间 这些
  • 通过ajax执行后期操作时如何克服CORS重定向问题?

    我可以通过外部登录表单中的 post 方法类型提交表单来登录 roundcube 实例 托管在另一台服务器上 我收到此错误 通过 ajax 签名时 XMLHttpRequest 无法加载https 192 168 0 7 mail http
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE
  • PHP简单的html dom解析器与wordpress冲突吗?

    PHP简单的html dom解析器与wordpress冲突吗 因为每当我尝试将其与此代码一起包含在我的标头中时 一切都变成空白 感谢您提前提供任何帮助 当我尝试在 HTML 文档中使用 PHP 包含时 我遇到了同样的问题 但当我使用func
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt

随机推荐

  • Freemarker - 在配置文件中包含多个模板

    如何使用 Smooks 在 Freemarker 配置文件中包含多个模板
  • 将 IN 子句与 LINQ-to-SQL ExecuteQuery 结合使用

    LINQ to SQL 在翻译我的一个查询时做得很糟糕 所以我手动重写了它 问题是重写必然涉及到IN子句 我一生都无法弄清楚如何将集合传递给ExecuteQuery为了这个目的 我唯一能想到的 我在这里看到的建议 就是使用string Fo
  • 将IPV6和IPV4存储在MySql中并读取它

    我有一个 php 网站 我想为每个用户存储最后一个IP 我希望它同时适用于 IPV4 和 IPV6 用户 知道怎么做吗 只需使用以下命令将它们转换为二进制表示形式inet pton http php net manual en functi
  • Android HttpClient 持久 cookie

    更新 这个问题及其答案不应再推荐给任何阅读本文的人 Android 不再推荐 HttpClient 阅读 已弃用 而是推荐 HttpUrlConnection http android developers blogspot de 2011
  • jQuery 偏移量为 或内联

    我创建了一个测试用例 请查看它 因为它说明了我的问题 http jsfiddle net jAD2W 6 http jsfiddle net jAD2W 6 简化示例感谢 patrick dw 为了完整起见 此代码也已添加到本文的底部 基本
  • 如何从 C 中的 IPv4 地址获取主机名?

    我需要一个简单的函数来输出char hostname 给定一个char IPAddress 有什么想法或提示吗 另外 从主机名获取 IP 地址的最简单方法是gethostbyname and inet ntoa 那是对的吗 Use geth
  • 如何引用 Java 的 KeyStroke.getKeyStroke 的 String 版本中的 mac 命令键?

    KeyStroke getKeyStroke String 的文档 例如 getKeyStroke control DELETE 没有提供如何访问 Macintosh 命令键的示例 并且我找不到列出该函数接受的 control 等修饰符的各
  • JavaScript - 通过基于特殊顺序的属性对对象数组进行排序

    我有一个具有多个属性的对象数组 给定以下数组 var people name allen age 33 color green name jon age 23 color blonde name silver age 54 color ye
  • 如何从分页 ui 网格中获取过滤数据

    我想在启用分页功能时从用户界面网格中获取过滤后的数据 一般情况下我使用 scope gridApi core on filterChanged scope function if scope gridApi grid columns 1 f
  • 实例变量继承

    有人可以解释一个类如何访问其超类的实例变量以及这为什么不是继承吗 我正在谈论 Ruby 编程语言 和示例 class Point def initialize x y Initialize method x y x y Sets initi
  • 在分发包中使用 virtualenv 部署 Django?

    我必须将 Django 应用程序部署到 SuSE Linux Enterprise 11 系统上 公司规则规定我只需要使用 RPM 进行部署 虽然我可以使用 setup py bdist rpm对于每个依赖项 这并不是真正明智的 因为 RP
  • MongoDB php $in 和 $regex

    我正在尝试结合 regex 和 in 来进行简单的搜索 例如我有一个这样的用户查询 user query for focus red 在我的每个文档的 mongodb 集合中 我都有一个关键字字段 我想获取字段关键字所在的文档 keywor
  • 二进制序列化 - 在 scala 2.10 上替换 Marshal

    由于 scala util Marshal 已弃用 如何将旧代码迁移到 scala 2 10 object Serilaizer def objectToBytes T foo T implicit expected ClassManife
  • 模块上的 __getattr__

    如何实现相当于 getattr 在一个类上 在一个模块上 Example 当调用模块的静态定义属性中不存在的函数时 我希望在该模块中创建类的实例 并使用与模块上的属性查找失败相同的名称调用其方法 class A object def sal
  • 1 台设备上的多个推送通知 - iPhone

    如何在一台设备上处理多个推送通知 例如 用户收到一条通知 称您有 1 条来自我的应用的新消息 在他检查该消息之前 另一条消息进来 所以现在他有 2 条消息 好吧 我不希望 2 条消息堆叠在通知栏中 我想要 1 条通知 表示有 2 条消息正在
  • HighCharts 系列 Z 指数

    有没有办法在不颠倒系列顺序的情况下将系列置于 Highcharts 的前面 在我的代码中 我使用了 graf 1 highcharts chart zoomType xy Highcharts 有一个zIndex http api high
  • 如何使用同一个记录器将不同级别的日志记录到控制台+日志文件?

    我有一个 log4j 记录器 当前将日志写入控制台和文件 工作正常 稍后我想将其配置为将 INFO ERROR 记录到日志文件中 但仅在控制台上显示 ERROR 为了实现这个目标我需要改变什么 log4j rootLogger INFO c
  • 关于使用 Java Swing 循环动态加载图像的问题

    public String imagesArray Images firstImage Images secondImage String imagesPath testproject images for int i 0 i
  • 如何查找哪些文件自提交后没有更改?

    在 git 中 如何找出目录中的哪些文件自某个提交以来没有更改 IMO 生成列表的更简单方法是使用以下命令链 git ls files full name grep v git diff name only
  • PHP 删除特定网站的链接但保留文本

    例如 a href http msdn microsoft com art029nr remove links to here but keep text a but a href http herpyderp com leave all