我搜索加上自己试验了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 - 博客园
后记:
今天在大批量文件操作的过程中发现第一种方法,在有些地方不能完全替换,我也搞不懂为什么
第一种方法
// $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);