PHP限制HTML内容中图片必须是本站的方法

yipeiwu_com7年前PHP代码库

本文实例讲述了PHP限制HTML内容中图片必须是本站的方法。分享给大家供大家参考。具体实现方法如下:

1. PHP代码如下:

<?php
$dom = new DOMDocument;
$dom->loadHTML(file_get_contents('input.html'));
$xpath = new DOMXpath($dom);
$img = $xpath->query('//img');
foreach($img as $i) {
  $url = parse_url($i->getAttribute('src'));
  if(isset($url['host']) && in_array($url['host'], array('yourdomain.com', 'www.yourdomain.com')) == false) {
    // show an error
      // -- or --
      // remove the tag: $i->parent->removeChild($i)
    echo sprintf('[FAIL] %s' . PHP_EOL, $i->getAttribute('src'));
  }
  else {
    echo sprintf('[PASS] %s' . PHP_EOL, $i->getAttribute('src'));
  }
}

2. 测试HTML代码:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p><img src="/image.jpg"></p>
<p><img src="/zb_users/upload/202003/ugwqkaxpu2t.jpg"></p>
<p><img src="/zb_users/upload/202003/myc3zv4eit2.jpg"></p>
<p><img src="/zb_users/upload/202003/ym0hcluvfs3.jpg"></p>

3. 运行结果:

[PASS] /image.jpg
[PASS] http://yourdomain.com/image.jpg
[PASS] http://www.yourdomain.com/image.jpg
[FAIL] http://otherdomain.com/image.jpg

希望本文所述对大家的php程序设计有所帮助。

相关文章

Php output buffering缓存及程序缓存深入解析

Php output buffering缓存及程序缓存深入解析

下面测试ob缓存和程序缓存:在测试前为了测试效果更明显,我们在php.ini里先关闭ob缓存并设置明显的错误级别。Output_buffering=offDisplay_errors=o...

PHP中调用ASP.NET的WebService的代码

其中有个web method像这样的: 复制代码 代码如下: [WebMethod] public string HelloWorld() { return "Hello World";...

PHP读取数据库并按照中文名称进行排序实现代码

有时候我们读取数据库输出的时候可能会需要按照中文用户名的方式进行排序,传统的MySQL查询代码如下: 复制代码 代码如下: $sql="SELECT * FROM users";//传统...

php微信开发自定义菜单

php微信开发自定义菜单

目前微信服务号自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由...

php错误、异常处理机制(补充)

一、错误处理 异常处理: 意外,是在程序运行过程中发生的意料这外的事,使用异常改变脚本正常流程 PHP5中的一个新的重要特性 复制代码 代码如下: if(){ }else{ } try...