转载出处:http://www.luanxin.top/index.php/archives/4/

仿站的时候扒下来的代码a链接总是指向别的地方,要一个一个改的话都要累死了,展示的时候随便点一下就乱跳,很烦,于是想用php写一个能改变a链接href属性的代码,代码如下:

<?php // 替换a标签中的href属性值
function a_replace_href($str) {
$preg = '/href=(\"|\')(.*?)(\"|\')/i';
$replacestr = 'href="#"';
$res = preg_replace($preg, $replacestr, $str);
return $res;
}
// 获取字符串中的所有a标签
function from_str_get_a($str){
$preg = '/<a .*?>/i';
preg_match_all($preg, $str, $imgArr);
return $imgArr[0];
}
$str = file_get_contents("index.html");
$data = from_str_get_a($str);//获取字符串中的a标签
$data1 = a_replace_href($data);//替换后应该显示的a标签
$res = $str;
// 反复对字符串进行查找替换
foreach ($data as $key => $value) {
$res = str_replace($value,$data1[$key],$res,$i);
}
// 另存文件
file_put_contents("index1.html",$res);
?>

原理就是采用正则匹配然后替换,如果你们有更好的想法或优化欢迎留言评论,分享一下您的心得!
测试效果如下:
源文件代码:

替换后文件代码:

PHP替换HTML文件中所有a标签的HREF属性,其他不变的更多相关文章

  1. Linux命令行批量替换多文件中的字符串【转】

    Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串. ...

  2. 吴裕雄--天生自然python学习笔记:python文档操作自动查找替换 Word 文件中的指定文字

    Win32com 组件提供了自动替换 Word 文件中指定文字 的功能 .在使用“查找” 功能替换文字之前,可先清除源文字及目标文字的格式,以免影响替换效果,语法为 : 替换 Word 文件特定文字的 ...

  3. html中的a标签的target属性的四个值的区别?

    target属性规定了在何处打开超链接的文档. 如果在一个 <a> 标签内包含一个 target 属性,浏览器将会载入和显示用这个标签的 href 属性命名的.名称与这个目标吻合的框架或者 ...

  4. <a>标签的href属性

    <a> 标签的 href 属性用于指定超链接目标的 URL. 语法 <a href="value"> 属性值 值 描述 URL 超链接的 URL.可能的值: ...

  5. javascrip标签的href属性

    1.标签的href属性用于指定超链接目标的URL.href属性的值可以是任何有效文档的相对或绝对URL,包括片段ID和javascript代码段. 2.javascript:这是一个虚假的协议.所谓的 ...

  6. HTML <a> 标签的 href 属性

    w3school页面的描述: HTML <a> 标签的 href 属性 HTML <a> 标签 实例 href 属性规定链接的目标: <a href="http ...

  7. HTML5 超链接:a标签的href 属性

    H5中a标签的 href 属性用于指定超链接目标的 URL,这里主要给大家介绍一下 href 属性的定义和用法以及应用实例. 定义和用法: <a> 标签的 href 属性用于指定超链接目标 ...

  8. <a>标签缺少href 属性,鼠标经过不会出现手型

    声明: web小白的笔记,欢迎大神指点.联系QQ:1522025433. 直接看实例吧! <!doctype html> <html> <head> <met ...

  9. 关于a标签的href属性

    今天有人问起我a标签的href属性值为 # 与 JavaScript:void(0) 有啥区别,想来也没啥可说,就简单说两句 a标签的href属性,优点有: 天然鼠标手型,以及可以被键盘focus以及 ...

随机推荐

  1. linux下redis的安装、启动、关闭和卸载

    edis 在Linux 和 在Windows 下的安装是有很大的不同的,和通常的软件安装是一样的. 一  下载 Redis 安装包 去redis 官网下载reids 安装包, redis 官网默认只提 ...

  2. Go开发环境安装与环境变量配置

    1.Go安装包下载 https://studygolang.com/dl 2.安装 Windows平台下,直接下一步即可完成安装. 3.配置环境变量 系统变量 安装完成后,在系统变量的Path一栏,会 ...

  3. (转)libvirt和qemu编译安装

    借鉴:https://www.cnblogs.com/grglym/p/8053553.html 借鉴:http://blog.chinaunix.net/uid-31410005-id-577189 ...

  4. 让vim更加智能化

    从此,让我的vim更加的智能化,整整用了一个周日,基本是值得的: "新建.c\.cpp\.python\.sh等文件时,使用定义的函数SetTitle,自动插入文件头 func SetTit ...

  5. decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

    decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETU ...

  6. 6.linux 用户和权限的建立

    一.用户和权限的建立       su  用户名       切换用户,如果是root用户切换其他用户,不需要输入密码.     exit  可以切换回上一个用户       linux 操作系统用户 ...

  7. git前期准备

    git小结 设置用户名 git config –global user.name 'itcast' 设置用户名邮箱 git config –global user.email 'itcast' 查看设 ...

  8. 多线程-Thread和ThreadPool

    多线程原理 多线程都是基于委托的. 多线程优缺点 缺点: 1.导致程序复杂,开发调试维护困难,特别是线程交互. 2.线程过多导致服务器卡死,因为占用CPU 内存等资源. 优点: 1.良好的交互,特别对 ...

  9. 【Oracle/Maven】Maven导入oracle11g 自携带jdbc驱动包ojdbc6.jar到本地库

    Maven需要下载解压并添加到classpath,如果不明可以参考https://www.cnblogs.com/xiandedanteng/p/11403480.html 然后在命令行窗口执行: m ...

  10. 几种常见空间滤波器MATLAB实现

    本文链接:https://blog.csdn.net/LYduring/article/details/80443573 一.目的实现算术均值滤波器.几何均值滤波器.中值滤波器.修正的阿尔法均值滤波器 ...