如何用PHP读取html文件内容,删除html文档内的超链接然后保存

我搜索加上自己试验了2个小时,终于解决了这个问题

如何去掉html中的超链接 - 今天又进步了 - 博客园(这个是帮我打开并删除超级链接的信息)

php修改html文件内容并保存 急急急_百度知道,(这个是最后帮我把修改后内容重新保存好的内容)

经过以上网友的帮助,我实现了最终目标,就是使用PHP,读取一个HTML文档内容,然后使用替换函数,替换掉里面所有的超级链接信息,然后把修改后的内容,保存回原来的HTML文档中。代码如下:

 <?php
 
 function ModiHerf( $strA  ){
 $a= file_get_contents($strA);
 $a= preg_replace("/]+>/", "", $a);
 $a= preg_replace("/<\/a>/", "", $a);
 $filename = $strA;
 $somecontent = $a;
 // 首先我们要确定文件存在并且可写。
 if (is_writable($filename)) {
 // 在这个例子里,我们将使用添加模式打开$filename,
 // 因此,文件指针将会在文件的开头,
 // 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。
 if (!$handle = fopen($filename, 'w')) {
 echo "不能打开文件 $filename";
 exit;
 }
 // 将$somecontent写入到我们打开的文件中。
 if (fwrite($handle, $somecontent) === FALSE) {
 echo "不能写入到文件 $filename";
 exit;
 }
 //echo "成功地将 $somecontent 写入到文件$filename";
 fclose($handle);
 } else {
 echo "文件 $filename 不可写";
 }
 }
 ?>
<html>
<head>
<title>
</title>
</head>
<body>

<?php

//针对当前目录的情况下
$dir = scandir('.');  //遍历当前目录,把所有文件内的超级链接都删除
foreach($dir as $v){
  
 if(is_file($v))
   {
      ModiHerf($v); 
   echo ("$v is changed");
   echo "<br>";
   }
 else
   {
   echo ("$v is not a regular file");
     echo "<br>";
   } 
}
?>
    </body>
    </html>

 感恩互联网上的帮助信息,谢谢大家

补充,关于正则表达式的部分内容

https://www.jb51.net/article/118706.htm

PS:下面看下正则表达式 \w \s \d \b

. 匹配除换行符以外的任意字符

\w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。

\s 匹配任意的空白符

\d 匹配数字

\b 匹配单词的开始或结束

^ 匹配字符串的开始

$ 匹配字符串的结束

\w能不能匹配汉字要视你的操作系统和你的应用环境而定

php中正则表达式详解 - helloworldlee - 博客园

PHP: preg_replace - Manual

后记:

今天在大批量文件操作的过程中发现第一种方法,在有些地方不能完全替换,我也搞不懂为什么

第一种方法

// $a= preg_replace("/]+>/", "", $a);
// $a= preg_replace("/<\/a>/", "", $a);

第二种方法则会导致部分HTML文件完全打不开了

 // $year = preg_replace("/<a[^>]*href=[^>]*>|<\/[^a]*a[^>]*>/i","",$yearstr);

然后我找到了第三种正则表达式 ,目前为止测试正常,既可以删除超级链接,也不会导致文件打不开了.

$a= preg_replace("(<a [^>]*>|</a>)","",$a);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值